文件操作知识点(上)-CSDN博客
文件操作知识点(中)-CSDN博客
本节继续复习文件操作的相关知识,收尾。
文件读取结束的判定
应该要牢记, 判断文件是否读取结束不要直接使用feof。
feof的作用是:当文件读取结束的时候, 判断文件读取结束的原因是不是文件到了末尾。
当读取文本文件时, 判断返回值:EOF(fgetc)或者NULL(fgets)。
当读取二进制文件时, 判断返回值是否小于实际要读取的个数。
文件缓冲区的概念
ANSIC标准采用缓冲文件系统处理数据文件的。缓冲文件系统就是指,系统自动的在内存中为程序中的每一个正在使用的文件开辟一块”文件缓冲区”,从内存向磁盘输入数据应该先通过文件缓冲区, 等到文件缓冲区满了再一起送到磁盘上。如果是磁盘向计算机读入数据,则从磁盘文件中读取数据到文件缓冲区, 然后等到满了再一起读到计算机内存中。
int main()
{
FILE*pf = fopen("text", "w");
fputs("abcdef", pf);
printf("正在写数据,这时候我们可以打开⽂件,因为要观看是否写上内容,因为有10秒缓冲。但是我们发现⽂件没有内容。\n");
Sleep(10000);
printf("刷新缓冲区\n");
fflush(pf);//这个时候其实写上了。
printf("再睡眠10秒-此时,再次打开test.txt⽂件,⽂件有内容了\n");
Sleep(10000);
fclose(pf);//刷新缓冲区
pf = NULL;
return 0;
}
因为有缓冲区的存在, c语言操作文件的时候, 需要做刷新缓冲区或者再文件操作结束的时候关闭文件。 否则可能导致读写文件的问题。