【C-Primer-Plus读书笔记】第13章:文件输入/输出
与文件通信
- 文件是什么
文件通常是在磁盘或固态硬盘上的一段已命名存储区。C把文件看作是一系列连续的字节,每个字节都能被单独读取。由于某些环境中可能无法完全对应这个模型,C提供两种文件模式:文本模式和二进制模式 文本模式和二进制模式
首先要区分文本内容和二进制内容、文本文件格式和二进制格式、以及文件的文本模式和二进制模式。所有文件的内容都以二进制形式(0或1)存储。
- 如果文件最初使用二进制编码的字符(如ASCII或Unicode)表示文本;该文件是文本文件,其中包含文本内容;
- 如果文件中的二进制值代表机器语言代码或数值数据或图片或音乐编码,该文件就是二进制文件,其中包含二进制内容。
Unix用同一种文件格式(文本和二进制是同一种格式)处理文本文件和二进制文件的内容。
- C和Unix在文本中都使用
\n
(换行符)表示换行,程序可使用Unix目录中统计文件大小的计数来确定是否读到文件结尾; - OS X Macintosh文件用
\r
(回车符)表示新的一行; - MS-DOS文件用
\r\n
组合表示新的一行,用嵌入的Ctrl+Z
字符表示文件结尾。
- C和Unix在文本中都使用
C提供两种访问文件的途径:二进制模式和文本模式
- 在二进制模式中,程序可以访问文件的每个字节。
- 在文本模式中,程序所见的内容和文件的实际内容不同。程序会在读取文件时将本地环境的模式转换成C模式以便处理(如上面的换行标识符),反之写入文件时会将C模式转换回本地环境的模式。除了文本模式还能以二进制模式读写文本文件,其不会发生上述转换,显示文件实际内容。