描述
C库函数int setvbuf(FILE *stream, char *buffer, int mode, size_t size)定义应如何缓冲流。
声明
以下是 setvbuf() 函数的声明。
int setvbuf(FILE *stream, char *buffer, int mode, size_t size)
参数
stream- 这是指向标识打开流的 FILE 对象的指针。
buffer− 这是用户分配的缓冲区。如果设置为 NULL,该函数会自动分配指定大小的缓冲区。
mode- 这指定了文件缓冲的模式 -
不。 | 模式和描述 |
---|---|
1 |
_IOFBF Full buffering− 在输出时,一旦缓冲区已满就写入数据。在输入时,当请求输入操作并且缓冲区为空时填充缓冲区。 |
2 |
_IOLBF Line buffering- 在输出时,当一个换行符插入到流中或缓冲区已满时写入数据,先发生什么。在输入时,当请求输入操作并且缓冲区为空时,缓冲区被填充直到下一个换行符。 |
3 |
_IONBF No buffering− 不使用缓冲区。每个 I/O 操作都会尽快写入。缓冲区和大小参数被忽略。 |
size- 这是缓冲区大小(以字节为单位)
返回值
此函数在成功时返回零,否则返回非零值。
示例
下面的例子展示了 setvbuf() 函数的用法。
#include <stdio.h>
int main () {
char buff[1024];
memset( buff, '\0', sizeof( buff ));
fprintf(stdout, "Going to set full buffering on\n");
setvbuf(stdout, buff, _IOFBF, 1024);
fprintf(stdout, "This is tutorialspoint.com\n");
fprintf(stdout, "This output will go into buff\n");
fflush( stdout );
fprintf(stdout, "and this will appear when programm\n");
fprintf(stdout, "will come after sleeping 5 seconds\n");
sleep(5);
return(0);
}
让我们编译并运行上面的程序以产生以下结果。这里程序不断将输出缓冲到buff直到它第一次调用 fflush(),之后它再次开始缓冲输出并最终休眠 5 秒。它在程序出来之前将剩余的输出发送到 STDOUT。
Going to set full buffering on This is tutorialspoint.com This output will go into buff and this will appear when programm will come after sleeping 5 seconds
相关用法
- C语言 setviewport()用法及代码示例
- C语言 setlocale()用法及代码示例
- C语言 setlinestyle()用法及代码示例
- C语言 宏 setjmp()用法及代码示例
- C语言 setbuf()用法及代码示例
- C语言 setfillstyle() and floodfill()用法及代码示例
- C语言 sector()用法及代码示例
- C语言 sinh()用法及代码示例
- C语言 scanf()用法及代码示例
- C语言 strcspn()用法及代码示例
- C语言 showbits()用法及代码示例
- C语言 sqrt()用法及代码示例
- C语言 system()用法及代码示例
- C语言 strtol()用法及代码示例
- C语言 sprintf()用法及代码示例
- C语言 sscanf()用法及代码示例
- C语言 snprintf()用法及代码示例
- C语言 strrchr()用法及代码示例
- C语言 strftime()用法及代码示例
- C语言 strtok()用法及代码示例
注:本文由纯净天空筛选整理自 C library function - setvbuf()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。