C语言 <stdio.h> setvbuf() 函数
-
描述
C库函数int setvbuf(FILE *stream, char *buffer, int mode, size_t size)定义了应如何缓冲流。 -
声明
以下是setvbuf()函数的声明。参数- stream - 这是指向标识打开流的FILE对象的指针。
- buffer - 这是用户分配的缓冲区。如果设置为NULL,则该函数自动分配指定大小的缓冲区。
- mode - 这指定了文件缓冲的模式,如下-
- _IOFBF 完全缓冲 -输出时,一旦缓冲已满,就写入数据。在输入时,当请求输入操作且缓冲区为空时,缓冲区将被填充。
- _IOLBF 行缓冲 -在输出时,当在流中插入换行符或缓冲区已满时,将写入数据,以此类推。在输入时,当请求输入操作且缓冲区为空时,缓冲区将填充到下一个换行符。
- _IONBF 无缓冲 -不使用缓冲。每个I/O操作均应尽快写入。buffer和size参数将被忽略。
- size-这是字节的缓冲区大小
-
返回值
成功时此函数返回零,否则返回非零值。示例以下示例显示setvbuf()函数的用法-让我们编译并运行上面的程序以产生以下结果。在这里,程序一直将输出缓冲到buff中,直到它面对首次调用fflush()为止,之后再次开始缓冲输出,最后休眠5秒钟。在程序出来之前,它将剩余的输出发送到STDOUT。