第5章 标准I/O库

      当打开一个流时,标准I/O函数fopen返回一个指向FILE对象的指针。该对象通常是一个结构,它包含了标准I/O库为管理该流所需要的所有信息,包括:用于实现I/O的文件描述符、指向用于该流缓冲区的指针、缓冲区的长度、当前在缓冲区中的字符数以及出错标志等等。应用程序没有必要检验FILE对象。


      对一个进程预定义了三个流,并且这三个流可以自动地被进程使用,它们是:标准输入,标准输出,标准出错,这三个标准I/O流通过预定义文件指针stdin、stdout和stderr加以引用。


      标准I/O库提供缓冲的目的是尽可能减少使用read和write调用的次数,它也对每个I/O流自动地进行缓冲管理,从而避免了应用程序需要考虑这一点所带来的麻烦。

标准I/O提供了三种类型的缓冲:

  1. 全缓冲。这种情况下,在填满标准I/O缓冲区后才进行实际I/O操作。对于驻留在磁盘上的文件通常是由标准I/O库实施全缓冲的。在一个流执行第一次I/O操作时,相关标准I/O函数通常调用malloc获得需使用的缓冲区。
  2. 行缓冲。这种情况下,当在输入和输出中遇到换行符时,标准I/O库执行I/O操作。当流涉及一个终端时(例如标准输入和标准输出),通常使用的是行缓冲。
  3. 不带缓冲。标准I/O库不对字符进行缓冲存储。标准出错流stderr通常是不带缓冲的,这就使得出错信息可以尽快的显示出来,而不管它们是否含有一个换行符。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值