C语言中的缓冲输出
程序的输出方式有两种:一种是及时输出,另一种是先缓存起来,然后大块输出。前者往往给系统造成很大的负担,影响程序性能。后者的实现,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; }