setvbuf的使用

来源:互联网 发布:java ee 在线拍卖系统 编辑:程序博客网 时间:2024/05/16 08:05

setvbuf

  函数名: setvbuf
  功 能: 把缓冲区与流相关
  用 法: int setvbuf(FILE *stream, char *buf, int type, unsigned size);
  参数:stream :指向流的指针 ;
  buf : 期望缓冲区的地址;
  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 <stdio.h>
  int main(void)
  {
  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;
  }
原创粉丝点击