关于文件缓冲区的概念

网友投稿 797 2022-05-28

大家好,我是芒果,一名非科班的在校大学生。对C/C++、数据结构、Linux及MySql、算法等领域感兴趣,喜欢将所学知识写成博客记录下来。 希望该文章对你有所帮助!如果有错误请大佬们指正!共同学习交流

掘金LV3用户 https://juejin.cn/user/1381426159953960

阿里云社区专家博主,星级博主,技术博主 https://developer.aliyun.com/profile/expert/5lkdbuggiiuhc

华为云云享专家 https://bbs.huaweicloud.com/community/myhomepage

14.文件缓冲区

ANSIC 标准采用“缓冲文件系统”处理的数据文件的, 所谓缓冲文件系统是指系统自动地在内存中为程序中每一个正在使用的文件开辟一块“文件缓冲区”。 从内存向磁盘输出数据会先送到内存中的缓冲区,装满缓冲区后才一起送到磁盘上。 如果从磁盘向计算机读入数据,则从磁盘文件中读取数据输入到内存缓冲区(充满缓冲区),然后再从缓冲区逐个地将数据送到程序数据区(程序变量等)。 缓冲区的大小根据C编译系统决定的。

就好比getchar:并不是直接从键盘直接拿数据

验证缓冲区的存在

#include #include //VS2013 WIN10环境测试 int main() { FILE* pf = fopen("test.txt", "w"); fputs("abcdef", pf);//先将代码放在输出缓冲区 printf("睡眠10秒-已经写数据了,打开test.txt文件,发现文件没有内容\n"); Sleep(10000); printf("刷新缓冲区\n"); fflush(pf);//刷新缓冲区时,才将输出缓冲区的数据写到文件(磁盘) //注:fflush 在高版本的VS上不能使用了 printf("再睡眠10秒-此时,再次打开test.txt文件,文件有内容了\n"); Sleep(10000); fclose(pf); //注:fclose在关闭文件的时候,也会刷新缓冲区 pf = NULL; return 0; }

上述用到的函数:

Sleep:休眠函数,要引用windows.h头文件,C语言中Sleep参数的单位是毫秒,1000ms = 1s

fflush:刷新缓冲区的函数,把缓冲区的内容数据写到文件中

执行结果:

再次打开:

关于文件缓冲区的概念

因为有缓冲区的存在,C语言在操作文件的时候,需要做刷新缓冲区或者在文件操作结束的时候关闭文件

刷新缓冲区/关闭文件的操作/缓冲区满了,数据才会写到文件中

文件讲解到这里就算结束了!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:张小白教你玩转Windows的WSL2
下一篇:【鲲鹏经典直播征文】+BoostKit分布式存储学习
相关文章