标准IO库与流的定向

2014-07-24 15:44:55   最后更新: 2014-07-24 15:44:55   访问数量:571




不仅在UNIX上,在很多系统中都实现了标准IO库,它由ISO C标准说明。

标准IO库处理很多细节,例如缓冲区的分配,以优化长度执行IO等,这使得它更加便于使用,但是如果不深入理解又会出现一些问题

 

大部分UNIX应用中使用标准IO库,但是标准IO库还有很多不足之处,比如由于频繁的缓冲区复制,导致运行效率的低下

关于刷新,当程序交互运行时,每次读写交替会自动冲洗缓冲区

 

第三章中介绍的无缓冲IO是针对文件描述符的,当打开一个文件时,返回一个文件描述符,然后使用这个文件描述符来进行后续的IO操作。

而对于标准IO,它们的操作是围绕流(stream)进行的,当使用标准IO库打开或创建一个文件时,我们已使一个流与一个文件相关联

 

流的定向决定了一个所读写的字符是单字节还是多字节的,可以用fwide函数设置和查询流的定向

int fwide(FILE *fp, int mode);

 

定义于 stdio.h 和 wchar.h 头文件中,调用成功时,若流逝宽定向则返回正值,若流是字节定向则返回负值,若流是未定向则返回0

 

根据mode的不同,fwide执行不同的工作:

  • 若mode为负,fwide将使指定的流为字节定向
  • 若mode为正,fwide将使指定的流为宽字符定向
  • 若mode为0,则不对指定的流做定向处理,只是返回当前的流定向

 

  • 注意:fwide只会改变未定向流而不会改变已定向的流定向,并且fwide没有出错返回,但是可以通过预先清除errno后分析errno的值来确定出错信息

 






读书笔记      技术帖      linux      unix      c++      cpp      c语言      龙潭书斋      apue      unix环境高级编程      io      fwide      标准io库     


京ICP备15018585号