9.1.3 标准文件流
C 语言还有 3 个特殊的文件流,即标准输入流(stdin)、标准输出流(stdout)和标准错误输出流(stderr)。称其特殊,主要是因为它们所关联的不是普通的文件,而是设备文件,即将计算机中的输入、输出设备当作文件来看待,例如默认情况下,标准输入流是和键盘相关联的,标准输出流和标准错误输出流是和控制台窗口相关联的。另外一个特别之处就是,用户不需要考虑这 3 个文件流的启用与关闭,它们是由系统管理的。当程序启动时,这 3 个文件流会自动被启用,用户可以直接使用,而在程序关闭时,这 3 个文件流会被自动关闭。
像用户之前所用到的 printf、scanf、getchar、putchar 等函数都是使用的标准文件流,其中 printf 和 putchar 是通过标准输出流向控制台窗口打印输出数据,而 scanf 和 getchar 是通过标准输入流获取由键盘所输入的数据。标准输入流和标准输出流是带缓冲的文件流,数据在文件端和程序端之间进行传输时,需经过缓冲处理,即先将数据存入缓冲区,当缓冲区满了或是强制刷新缓冲区时,数据才会真正地到达目的端,如图 9.2 所示。
图 9.2 文件流的缓冲区
使用缓冲区的好处是能够提高程序效率,要知道,对(存储在硬盘上)文件的读写效率是远远低于对内存的读写效率的。因此,在读取文件时,可以先从文件中获取特定量的数据放入缓冲区中,程序再从缓冲区里读取数据;同样地,在写入文件时,先将数据写入缓冲区中,当缓冲区满或强制刷新时,再将缓冲区中的数据一次性写入文件,这样就大大地减少了对(存储在硬盘上)文件的读写次数,从而提高程序的运行效率。
标准错误输出流用于程序发生错误或特殊情形发生时,能够打印输出相关信息。标准错误输出流是一种不带缓冲的输出流,这样做的目的,是为了不受缓冲区影响,能够及时地将信息打印显示出来。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论