#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<error.h>
#include<errno.h>
#include<unistd.h>
#include<strings.h>
#include<stdbool.h>
#include<sys/stat.h>
#include<sys/types.h>
#include<sys/wait.h>
#include<fcntl.h>
int main(int argc,char **argv)
{
fputs("to stdout",stdout);//行缓冲,只有字符串后面加油‘\n’,才会显示到屏幕
fputs("to stderr",stderr);//无缓冲,直接显示到屏幕
FILE *fp = fopen("a.txt","w");//全缓冲,一般为4k,windows为1k..
	if(fp == NULL)
	{
	fprintf(stderr,"fopen()%s failed:%s","a.txt",strerror(errno));
	exit(0);
	}
	fputs("to a.txt",fp);
	pause();
fflush(fp);//强制刷新全缓冲。
//	return 0;
}
----------------------------------------------
几条刷新注意:
关于标准IO缓冲区
================================
1,不缓冲(标准出错流stderr)
   1.1 一旦缓冲区中有数据,立即刷新。
2,全缓冲(普通文件)
   2.1 一旦把缓冲区填满,立即刷新(做练习:检测全缓冲的大小)
   2.2 调用fflush()强制刷新。
   2.3 程序正常退出时,立即刷新。
       2.3.1 在main函数中return
       2.3.2 在任意地方调用exit()/_exit()/_Exit()
       2.3.3 在最后一条线程中调用pthread_exit()
   2.4 调用fclose()关闭文件时,立即刷新。
   2.5 调用setvbuf()/setbuf()更改缓冲区类型时,立即刷新。
3,行缓冲(标准输出流stdout)
   3.1 一旦把缓冲区填满,立即刷新(做练习:检测全缓冲的大小)
   3.2 调用fflush()强制刷新。
   3.3 程序正常退出时,立即刷新。
       3.3.1 在main函数中return
       3.3.2 在任意地方调用exit()/_exit()/_Exit()
       3.3.3 在最后一条线程中调用pthread_exit()
   3.4 调用fclose()关闭文件时,立即刷新。
   3.5 调用setvbuf()/setbuf()更改缓冲区类型时,立即刷新。
   3.6 一旦遇到‘\n‘
原文:http://www.cnblogs.com/defen/p/5190278.html