34-关键概念
13.8 关键概念
C程序把输入看作是字节流,输入流来源于文件、输入设备(如键盘),或者甚至是另一个程序的输出。类似地, C 程序把输出也看作是字节流,输出流的目的地可以是文件、视频显示等。
C如何解释输入流或输出流取决于所使用的输入 / 输出函数。程序可以不做任何改动地读取和存储字节,或者把字节依次解释成字符,随后可以把这些字符解释成普通文本以用文本表示数字。类似地,对于输出,所使用的函数决定了二进制值是被原样转移,还是被转换成文本或以文本表示数字。如果要在不损失精度的前提下保存或恢复数值数据,请使用二进制模式以及 fread() 和 fwrite() 函数。如果打算保存文本信息并创建能在普通文本编辑器查看的文本,请使用文本模式和函数(如 getc() 和 fprintf() )。
要访问文件,必须创建文件指针(类型是 FILE *)并把指针与特定文件名相关联。随后的代码就可以使用这个指针(而不是文件名)来处理该文件。
要重点理解C如何处理文件结尾。通常,用于读取文件的程序使用一个循环读取输入,直至到达文件结尾。C输入函数在读过文件结尾后才会检测到文件结尾,这意味着应该在尝试读取之后立即判断是否是文件结尾。可以使用13.2.4节中“设计范例”中的双文件输入模式。