标准IO库,主要是流

1.流的定向:决定了所读的,写的字符是单字节还是多字节,当一个流最初被创建的时候,并没有进行流的重定向,流的重定向取决于第一次的操作,在流上使用一个单字节的I/O函数,则流被设置为字节定向,若宽字节则被设置位多字节

2:缓冲,在行缓冲中,如果有读一个不带缓冲的流或者一个行缓冲的流,则要进行冲洗输出缓冲区

setvbuf可以设置缓冲方式,全缓冲,行缓冲,没有缓冲

3:打开流,

对于fdopen,type参数的意义则稍有区别。因为该描述符已被打开,所以fdopen写而打开并不截短该文件。 (若

该描述符原来是由open函数打开的,该文件那时已经存在,则其O_TRUNC标志将决定是否截短该文件。fdopen

数不能截短它为写而打开的任一文件。)另外,标准 I / O添加方式也不能用于创建该文件(因为如若一个描述符

引用一个文件,则该文件一定已经存在)。

流在打开的时候默认的是全缓冲,若引用的是终端设备,则是行缓冲的

!!!

当以读和写类型打开一文件时( t y p e中+号),具有下列限制:

• 如果中间没有ff l u s h、f s e e k、f s e t p o s或r e w i n d,则在输出的后面不能直接跟随输入。

• 如果中间没有 f s e e k、f s e t p o s或r e w i n d ,或者一个输出操作没有到达文件尾端,则在输入操

作之后不能直接跟随输出。

4读和写流

在读和写流的时候,其实流的缓冲都已经安排好了,在读行的时候比如,fgets(buf,n,fp)buf指的是此函数指

定的读某个流的数据,并将数据存放在某一个地方,这个缓冲区并不是流的缓冲区

读和写流有单个字符,每次一行,每次一个结构

在读和写单个字节的时候,可以将读出来的字符,在送回流中,ungetc(int c, FILE *fp)

比如说流中有,cab,先读出c,在送回c,则流变成cab~~若先读出c,在送回d,则为dab

5临时文件








原文地址:https://www.cnblogs.com/SmileLion/p/5863575.html