首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

setbuf 跟setvbuf 简单介绍

2013-03-29 
setbuf 和setvbuf 简单介绍setvbuf  函数名: setvbuf  功 能: 把缓冲区与流相关  用 法: int setvbuf(FILE

setbuf 和setvbuf 简单介绍

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>char outbuf[50];#if 0int main(void){ /* 将outbuf与stdout输出流相连接 */ setbuf(stdout,outbuf); /* 向stdout中放入一些字符串 */ puts("This is a test of buffered output."); puts("This output will go into outbuf"); puts("and won't appear until the buffer"); puts("fills up or we flush the stream.\n"); /* 以下是outbuf中的内容 */// puts(outbuf); /*刷新流*/// fflush(stdout); return 0;}#endif#include<stdio.h>#include<stdlib.h>//char buf[6];int main(){ // static char buf[6]; setbuf(stdout,malloc(100)); int c; int i = 0; while((c=getchar())!=EOF && getchar()) { putchar(c);#if 1 printf("hello\n"); i++; if(i>5) { return 0; } #endif } return 0; }
 运行结果自己测试理解吧~

#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; }


 

热点排行