C标准库函数setvbuf的名称全称

setvbuf函数的名称全称是什么,函数名称中字母v指代的是什么?

因为有了setbuf,所以只好加上v
猜测下,v可能是指vector,向量,也可能什么也不指

函数名: setvbuf
用 法: int setvbuf(FILE *stream, char *buf, int type, unsigned size);
type : 期望缓冲区的类型:
_IOFBF(满缓冲):当缓冲区为空时,从流读入数据。或者当缓冲区满时,向流写入数 据。
_IOLBF(行缓冲):每次从流中读入一行数据或向流中写入一行数据。
_IONBF(无缓冲):直接从流中读入数据或直接向流中写入数据,而没有缓冲区。
size : 缓冲区内字节的数量。
注意:This function should be called once the file associated with the stream has already been opened but before any input or output operation has taken place.
意思是这个函数应该在打开流后,立即调用,在任何对该流做输入输出前

#include

int main()
{
FILE input, *output;
char bufr[512];
input = fopen("file.in", "r+b");
output = fopen("file.out", "w");
/
set up input stream for minimal disk access,
using our own character buffer /
if (setvbuf(input, bufr, _IOFBF, 512) != 0)
printf("failed to set up buffer for input file\n");
else
printf("buffer set up for input file\n");
/
set up output stream for line buffering using space that
will be obtained through an indirect call to malloc /
if (setvbuf(output, NULL, _IOLBF, 132) != 0)
printf("failed to set up buffer for output file\n");
else
printf("buffer set up for output file\n");
/
perform file I/O here /
/
close files */
fclose(input);
fclose(output);
return 0;
}

也有可能是variant,表示buffer可变长度。

C 库函数 int setvbuf(FILE *stream, char *buffer, int mode, size_t size) 定义流 stream 应如何缓冲。

void setbuf( FILE * stream, char * buf ) 表示给流stream指定一个缓冲区buf

void setvbuf( FILE * stream, char * buf, int type, unsigned size ) 表示给流stream指定一个缓冲区buf,大小为size,类型为type,type值见下表

┌──────┬───────────────────────────────────────────┐
│type值 │意义 │
├──────┼───────────────────────────────────────────┤
│IOFBF │文件是完全缓冲区,当缓冲区是空时,下一个输入操作将企图填满整个缓 |
│ | 冲区.在输出时,在把任何数据写到文件之前,将完全填充缓冲区 |
|───────────────────────────────────────────────────|

│IOLBF │文件是行缓冲区.当缓冲区为空时,下一个输入操作将仍然企图填整个缓 |
| |冲区.然而在输出时,每当新行符写到文件,缓冲区就被清洗掉. |
|───────────────────────────────────────────────────|
│IONBF │文件是无缓冲的.buf和size参数是被忽略的.每个输入操作将直接从文 |
| | 件读,每个输出操作将立即把数据写到文件中. |

└──────┴───────────────────────────────────────────┘
这是两个函数,你对比一下吧

https://msdn.microsoft.com/ZH-CN/library/86cebhfs(v=VS.110,d=hv.2).aspx

函数名: setvbuf

功 能: 把缓冲区与流相关

用 法: int setvbuf(FILE *stream, char *buf, int type, unsigned size);

参数:stream :指向流的指针 ;

buf : 期望缓冲区的地址;

type : 期望缓冲区的类型:

_IOFBF(满缓冲):当缓冲区为空时,从流读入数据。或者当缓冲区满时,向流写入数 据。

_IOLBF(行缓冲):每次从流中读入一行数据或向流中写入一行数据。

_IONBF(无缓冲):直接从流中读入数据或直接向流中写入数据,而没有缓冲区。

size : 缓冲区内字节的数量。

setvbuf()用来设定文件流的缓冲区,c还有setbuf()函数用来设定文件流和缓冲区的关联。http://www.jb51.net/article/71720.htm