第5章 标准I/O库
来源:互联网 发布:枕头高度 知乎 编辑:程序博客网 时间:2024/05/17 05:56
- 流的定向决定了所读、写的字符是单字节还是多字节的。(如ASCII字符集是单字节的,国际字符集是多字节的)
#include<stdio.h>#include<wchar.h>int fwide(FILE *fp, int mode)宽定向返回正值,字节定向返回负值,未定向返回0fwide并不改变已定向的流方向
- 三个标准I/O流通过预定义文件指针stdin、stdout和stderr加以引用。
- 缓冲
标准I/O库提供缓冲的目的是尽可能减少使用read和write调用次数。
UNIX里面关于标准IO的几种缓冲机制:
1、全缓冲 。全缓冲指的是系统在填满标准IO缓冲区之后才进行实际的IO操作;注意,对于驻留在磁盘上的文件来说通常是由标准IO库实施全缓冲。一般调用malloc获得缓冲区,调用fflush强制写入磁盘
2、行缓冲 。在这种情况下,标准IO在输入和输出中遇到换行符时执行IO操作;注意,当流涉及终端的时候,通常使用的是行缓冲。
3、无缓冲 。无缓冲指的是标准IO库不对字符进行缓冲存储;注意,标准出错流stderr通常是无缓冲的。 - 标准I/O效率
图5-6中显示了对统一文件(98.5MB,300万行)进行行操作多的的数据
对于这三个标准的io版,其用户时间都大于表3-2中的最佳read版本,因为在每次读一个字符的标准I/O版本中有一个要执行一亿次的循环。而对每读一行的版本要执行三百万多次循环。在read版本中,其循环只需执行12611次,主要决定了缓冲区的长度8192字节。
其差别就是在cpu时间和等待I/O结束所消耗的时间。 - 临时文件
#include<stdio.h>功能产生一个唯一的文件名函数原型char *tmpnam(char *sptr);
sptr可以是NULL或者一个栈地址。当sptr为NULL时,返回一个内部静态内存地址(保存了临时文件名),当下一次以NULL调用函数的时候,该内存会被修改。栈地址必须至少有L_tmpnam内存,这样名字保存在那个数组里面,如数组 char buffer [L_tmpnam],注意用此文件名去打开文件流所创建的文件都是临时性的。tmpnam可以被一个程序最多调用TMP_MAX(最少为几千次),每一次它都会返回一个不同的文件名。功 能以wb+形式创建一个临时二进制文件函数原型FILE *tmpfile(void);
标准I/O库中提供了两个函数来创建临时文件,这个函数是其中之一,另外一个是tmpnam。值得注意的是,每调用一次tmpnam,就产生一个不同的文件名,最多调用次数为TMP_MAX,该宏定义在<stdio.h>中。创建的临时文件在程序退出时会被自动删除。 - 内存流
标准I/O库把数据缓存在内存中,因此每次一个字符和每次一行的I/O更有效。我们可以通过调用setbuf货setvbuf函数让I/O库使用我们自己的缓冲区。
1 0
- 第5章 标准I/O库
- 第5章 标准I/O库
- APUE第5章标准I/O库 笔记
- apue 第5章 标准I/O库
- 5、标准I/O库
- UNIX环境高级编程(第5章 标准I/O库)
- UNIX环境高级编程-第5章- 标准 I/O 库
- UNIX环境高级编程之第5章:标准I/O库
- UNIX环境高级编程之第5章:标准I/O库-习题
- 标准I/O库
- 标准I/O库
- 标准I/O库
- 标准I/O库
- 标准I/O库
- 标准I/O库
- 标准I/O库
- 标准I/O库
- 标准I/O库
- POJ1679------The Unique MST
- 博客的起点
- 软工视频——结尾篇
- eclipse 看*.vm 文件里面的coding都是黑色怎么设置
- poj-3253
- 第5章 标准I/O库
- 学习JAVA过程中遇到的一些低级问题备忘记录
- 在浏览器上使用服务器字体文件的字体
- 03+在一个有序的二维数组中查找一个数
- 程序员面试笔试宝典——读书笔记6、操作系统基础知识
- Swift 2.0 到底「新」在哪?
- HDU1856 - More is better 利用并查集找最大群体数目
- 华为机试题(一) 最高分是多少
- 霍夫变换