返回介绍

9.1.3 标准文件流

发布于 2025-04-11 22:33:04 字数 969 浏览 0 评论 0 收藏 0

C 语言还有 3 个特殊的文件流,即标准输入流(stdin)、标准输出流(stdout)和标准错误输出流(stderr)。称其特殊,主要是因为它们所关联的不是普通的文件,而是设备文件,即将计算机中的输入、输出设备当作文件来看待,例如默认情况下,标准输入流是和键盘相关联的,标准输出流和标准错误输出流是和控制台窗口相关联的。另外一个特别之处就是,用户不需要考虑这 3 个文件流的启用与关闭,它们是由系统管理的。当程序启动时,这 3 个文件流会自动被启用,用户可以直接使用,而在程序关闭时,这 3 个文件流会被自动关闭。

像用户之前所用到的 printf、scanf、getchar、putchar 等函数都是使用的标准文件流,其中 printf 和 putchar 是通过标准输出流向控制台窗口打印输出数据,而 scanf 和 getchar 是通过标准输入流获取由键盘所输入的数据。标准输入流和标准输出流是带缓冲的文件流,数据在文件端和程序端之间进行传输时,需经过缓冲处理,即先将数据存入缓冲区,当缓冲区满了或是强制刷新缓冲区时,数据才会真正地到达目的端,如图 9.2 所示。

图 9.2 文件流的缓冲区

使用缓冲区的好处是能够提高程序效率,要知道,对(存储在硬盘上)文件的读写效率是远远低于对内存的读写效率的。因此,在读取文件时,可以先从文件中获取特定量的数据放入缓冲区中,程序再从缓冲区里读取数据;同样地,在写入文件时,先将数据写入缓冲区中,当缓冲区满或强制刷新时,再将缓冲区中的数据一次性写入文件,这样就大大地减少了对(存储在硬盘上)文件的读写次数,从而提高程序的运行效率。

标准错误输出流用于程序发生错误或特殊情形发生时,能够打印输出相关信息。标准错误输出流是一种不带缓冲的输出流,这样做的目的,是为了不受缓冲区影响,能够及时地将信息打印显示出来。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。