程序的输出方式有两种:一种是及时输出,另一种是先缓存起来,然后大块输出。前者往往给系统造成很大的负担,影响程序性能。后者的实现,C语言通过函数 void setbuf ( FILE * stream, char * buffer );实现。此函数的功能是通知输入输出函数库中的函数,所有写入到stream的输出都应该使用buffer作为输出缓冲区,直到buffer缓冲区被填满,或者程序员显式调用int fflush ( FILE * stream );,才真正执行写入操作。
例子:
#include <stdio.h>
int main ()
{
char buffer[BUFSIZ];
FILE *pFile1, *pFile2;
pFile1=fopen ("myfile.txt","w");
pFile2=fopen ("myfile2.txt","a");
setbuf ( pFile1 , buffer );
fputs ("This is sent to a buffered stream",pFile1);
fflush (pFile1);
setbuf ( pFile2 , NULL );
fputs ("This is sent to an unbuffered stream",pFile2);
fclose (pFile1);
fclose (pFile2);
return 0;
}