再ANSI C的任何一种实现中,存在两个不同的环境
第一种是翻译环境,在这个环境中源代码被转化为可执行机器指令。
第二种是执行环境,它用于实际执行代码
#include <stdio.h>
#include <windows.h>
int main()
{
FILE* pf = fopen("test.txt", "w");
fputs("abcdef", pf);//先将代码放在输出缓冲区 printf("睡眠10秒-已经写数据了,打开test.txt文件,发现文件没有内容\n");
Sleep(20000);//睡眠10秒
printf("刷新缓冲区\n");
fflush(pf);//刷新缓冲区时,才将输出缓冲区的数据写到文件(磁盘)
//注:fflush 在高版本的VS上不能使用了
printf("再睡眠10秒-此时,再次打开test.txt文件,文件有内容了\n");
Sleep(20000);
fclose(pf);
//注:fclose在关闭文件的时候,也会刷新缓冲区
pf = NULL;
return 0;
}
由于为了编码的效率,写入的数据会被放入缓冲区里面,然后再写入硬盘里面,如上代码可以从文件里面很好的观察此效果。