把缓冲区与流相关

功 能: 把缓冲区与流相关
用 法: int setvbuf(FILE *stream, char *buf, int type, unsigned size);
程序例:
#include
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;
}

设置文件缓冲区函数
      void setbuf(FILE *stream,char *buf);
      void setvbuf(FILE *stream,char *buf,int type,unsigned size);
      这两个函数将使得打开文件后,用户可建立自己的文件缓冲区,而不使用fopen()函数打开文件设定的默认缓冲区。  
      对于setbuf()函数,buf指出的缓冲区长度由头文件stdio.h中定义的宏BUFSIZE的值决定,缺省值为512字节。当选定buf为空时,setbuf函数将使的文件I/O不带缓冲。而对setvbuf函数,则由malloc函数来分配缓冲区。参数size指明了缓冲区的长度(必须大于0),而参数type则表示了缓冲的类型,其值可以取如下值:
type 值 含义
      _IOFBF 文件全部缓冲,即缓冲区装满后,才能对文件读写
      _IOLBF 文件行缓冲,即缓冲区接收到一个换行符时,才能对文件读写
      _IONBF 文件不缓冲,此时忽略buf,size的值,直接读写文件,不再经过文件缓冲区缓冲

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值