27-int setvbuf()函数
13.7.3 int setvbuf() 函数
setvbuf() 函数的原型是:
int setvbuf(FILE * restrict fp, char * restrict buf, int mode, size_t size);
setvbuf() 函数创建了一个供标准I/O函数替换使用的缓冲区。在打开文件后且未对流进行其他操作之前,调用该函数。指针 fp 识别待处理的流, buf 指向待使用的存储区。如果 buf 的值不是 NULL ,则必须创建一个缓冲区。例如,声明一个内含1024个字符的数组,并传递该数组的地址。然而,如果把 NULL 作为 buf 的值,该函数会为自己分配一个缓冲区。变量 size 告诉 setvbuf() 数组的大小( size_t 是一种派生的整数类型,第5章介绍过)。 mode 的选择如下: _IOFBF 表示完全缓冲(在缓冲区满时刷新); _IOLBF 表示行缓冲(在缓冲区满时或写入一个换行符时); _IONBF 表示无缓冲。如果操作成功,函数返回 0 ,否则返回一个非零值。
假设一个程序要存储一种数据对象,每个数据对象的大小是3000字节。可以使用 setvbuf() 函数创建一个缓冲区,其大小是该数据对象大小的倍数。