setvbuf()



setvbuf,是一种函数名。
中文名
setvbuf
功 能
把缓冲区与流相关
参    数
stream :指向流的 指针 
buf    
期望缓冲区的地址
返回值
成功执行返回0,否则返回非零值

目录

  1. 1简介
  2. 2程序例

简介

编辑
函数名: 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.
意思是这个函数应该在打开流后,立即调用,在任何对该流做输入输出前

程序例

编辑
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdio.h>
 
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;
}

你可能感兴趣的:(setvbuf())