C语言stdio头文件(stdio.h)中setvbuf函数的用法及代码示例。
用法:
int setvbuf ( FILE * stream, char * buffer, int mode, size_t size );
更改流缓冲
如果缓冲是一个空指针,该函数自动分配一个缓冲区(使用尺寸作为使用尺寸的提示)。否则,由指向的数组缓冲可用作缓冲尺寸个字节。
一旦流已与一个打开的文件相关联,但是在对该文件执行任何输入或输出操作之前。
A 流缓冲区是作为I /O操作和与流相关联的物理文件之间的中介的数据块:对于输出缓冲区,数据一直输出到缓冲区,直到达到其最大容量为止,然后flushed(即:所有数据立即发送到物理文件并清除缓冲区)。同样,从物理文件填充输入缓冲区,然后将数据从该物理文件发送到操作,直到用尽为止,此时从文件中获取新数据以再次填充缓冲区。
可以通过调用显式刷新流缓冲区fflush。它们也会被自动冲洗fclose和freopen,或程序正常终止时。
使用默认分配的缓冲区打开所有文件(完全缓冲)(如果已知它们不是指交互式设备)。此函数可用于重新定义缓冲区尺寸或者模式,以定义user-allocated缓冲区或禁用流的缓冲。
默认流stdin和stdout是完全缓冲如果已知它们不引用交互式设备,则默认情况下为默认。否则,它们可能是行缓冲或者无缓冲默认情况下,具体取决于系统和库的实现。同样的道理stderr,始终是行缓冲或者无缓冲默认情况下。
参数
- stream
- 指向一个指针FILE标识开放流的对象。
- buffer
- 用户分配的缓冲区。至少应尺寸个字节长。
如果设置为空指针,该函数将自动分配一个缓冲区。 - mode
- 指定文件缓冲的模式。三个特殊的宏常量(_IOFBF,_IOLBF和_IONBF)在中定义<cstdio>用作此参数的值:
_IOFBF 完整缓冲:在输出时,一旦缓冲区已满(或刷新),就将写入数据。在输入时,当请求输入操作且缓冲区为空时,缓冲区将被填充。 _IOLBF 行缓冲:在输出时,在将换行符插入流中或缓冲区已满(或刷新)时(无论先发生什么情况),都会写入数据。在输入时,当请求输入操作且缓冲区为空时,缓冲区将填充到下一个换行符。 _IONBF 没有缓冲:不使用缓冲区。每个I /O操作均应尽快写入。在这种情况下,buffer和size参数将被忽略。 - size
- 缓冲区大小,以字节为单位。
如果缓冲参数是一个空指针,此值可以确定函数自动为缓冲区分配的大小。
返回值
如果将缓冲区正确分配给文件,则返回零值。否则,返回非零值;否则返回0。这可能是由于无效模式参数或分配或分配缓冲区的其他错误。
示例
/* setvbuf example */
#include <stdio.h>
int main ()
{
FILE *pFile;
pFile=fopen ("myfile.txt","w");
setvbuf ( pFile , NULL , _IOFBF , 1024 );
// File operations here
fclose (pFile);
return 0;
}
在此示例中,名为myfile.txt将创建一个文件,并为关联的流请求一个1024字节的完整缓冲区,因此,每次填充1024字节的缓冲区时,输出到此流的数据都应写入文件中。
相关用法
- C语言 remove用法及代码示例
- C语言 rename用法及代码示例
- C语言 tmpfile用法及代码示例
- C语言 tmpnam用法及代码示例
- C语言 fclose用法及代码示例
- C语言 fflush用法及代码示例
- C语言 fopen用法及代码示例
- C语言 freopen用法及代码示例
- C语言 setbuf用法及代码示例
- C语言 fprintf用法及代码示例
- C语言 fscanf用法及代码示例
- C语言 printf用法及代码示例
- C语言 scanf用法及代码示例
- C语言 snprintf用法及代码示例
- C语言 sprintf用法及代码示例
- C语言 sscanf用法及代码示例
- C语言 vfprintf用法及代码示例
- C语言 vfscanf用法及代码示例
- C语言 vprintf用法及代码示例
- C语言 vscanf用法及代码示例
- C语言 vsnprintf用法及代码示例
- C语言 vsprintf用法及代码示例
- C语言 vsscanf用法及代码示例
- C语言 fgetc用法及代码示例
- C语言 fgets用法及代码示例
- C语言 fputc用法及代码示例
- C语言 fputs用法及代码示例
- C语言 getc用法及代码示例
- C语言 getchar用法及代码示例
- C语言 gets用法及代码示例
- C语言 putc用法及代码示例
- C语言 putchar用法及代码示例
- C语言 puts用法及代码示例
- C语言 ungetc用法及代码示例
- C语言 fread用法及代码示例
- C语言 fwrite用法及代码示例
- C语言 fgetpos用法及代码示例
- C语言 fseek用法及代码示例
- C语言 fsetpos用法及代码示例
- C语言 ftell用法及代码示例
- C语言 rewind用法及代码示例
- C语言 clearerr用法及代码示例
- C语言 feof用法及代码示例
- C语言 ferror用法及代码示例
- C语言 perror用法及代码示例
注:本文由纯净天空筛选整理自C标准库大神的英文原创作品 C setvbuf function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。