1.流的定向:决定了所读的,写的字符是单字节仍是多字节,当一个流最初被建立的时候,并无进行流的重定向,流的重定向取决于第一次的操做,在流上使用一个单字节的I/O函数,则流被设置为字节定向,若宽字节则被设置位多字节函数
2:缓冲,在行缓冲中,若是有读一个不带缓冲的流或者一个行缓冲的流,则要进行冲洗输出缓冲区spa
setvbuf能够设置缓冲方式,全缓冲,行缓冲,没有缓冲orm
3:打开流,blog
对于fdopen,type参数的意义则稍有区别。由于该描述符已被打开,因此fdopen写而打开并不截短该文件。 (若get
该描述符原来是由open函数打开的,该文件那时已经存在,则其O_TRUNC标志将决定是否截短该文件。fdopenit
函数不能截短它为写而打开的任一文件。)另外,标准 I / O添加方式也不能用于建立该文件(由于如若一个描述符终端
引用一个文件,则该文件必定已经存在)。引用
流在打开的时候默认的是全缓冲,若引用的是终端设备,则是行缓冲的im
!!!数据
当以读和写类型打开一文件时( 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临时文件