fread和fwrite是标准IO,在调用文件IO的基础上封装了用户空间缓冲区。这样可以减少系统调用的次数,在频繁使用IO的场景中减少系统开销。

因此,调用fwrite向文件中写入数据时,数据不会立即被写入到文件中,而是先被写入到内存中的缓冲区,当缓冲区满或者调用fclose()或者调用fflush()后才会将内存缓冲区中的数据写入到目标文件中。其实,在调用fflush()后,再次调用fsync()方能保证fwite写入的数据写入到磁盘中。

调用fread()会一次性从文件中读出相当多的数据到用户空间缓冲区中,然后慢慢从用户空间缓冲区取走数据,当缓冲区空,再次调用read()函数读取文件内容到缓冲区。当在fread()后调用fflush()时,会清除用户空间缓冲区中未被应用程序读取过的数据。

当使用标准IO并且需要立即将写入到用户空间缓冲区的数据刷新到文件中时,在fwrite()后调用fflush()。一般不需要在fread()后调用fflush()。

fread, fwrite和fflush相关推荐

  1. 缓冲文件系统(fopen/fread/fwrite)和非缓冲文件系统(open/read/write)

    open:系统调用,返回的是文件描述符,即文件句柄,是文件在文件描述副表里的索引. fopen:C语言库函数,返回的是一个指向文件结构的指针.fopen是ANSI C标准中的C语言库函数,在不同的操作 ...

  2. fopen /open,read/write和fread/fwrite区别

    fopen /open,read/write和fread/fwrite区别 转载URL:http://hi.baidu.com/%B9%C8%C9%F1%B2%BB%CB%C0jdp/blog/ite ...

  3. fread fwrite 的使用

    下面是一个用fread,fwrite向结构体中写入结构体,读出结构体的代码: #include <stdio.h> #include <stdlib.h> #include & ...

  4. Linux I/O操作fsync后数据就安全了么(fsync、fwrite、fflush、mmap、write barriers详解)

    系列文章 Linux I/O操作fsync后数据就安全了么(fsync.fwrite.fflush.mmap.write barriers详解) Linux I/O系列之直接内存(Direct IO) ...

  5. 33. 使用fread()/fwrite()往文件中写入结构体,从文件中读出结构体

    1 //读写结构体 2 #include <stdio.h> 3 typedef struct student 4 { 5 int num; 6 char name[30]; 7 char ...

  6. C++文件操作:fopen / fread / fwrite

    1. 方法介绍 1.1 open()函数:打开文件 包含头文件:     #include<stdio.h> 格式:FILE * fopen(const char * path,const ...

  7. C语言实现成块数据读写操作 fread() fwrite()

    首先讲解 c 语言中文件操作的两个关键函数:fread().fwrite() 1. fread( buffer , size , count , fp) 该函数实现从 fp 所指的文件中读入 coun ...

  8. 【fread/fwrite】C语言API之fread/fwrite函数详解

    文章目录 1.函数定义及原型 2.函数功能 3.函数示例 1.函数定义及原型 #include <stdio.h> size_t fread(void *ptr, size_t size, ...

  9. C++文件操作——fopen/fseek/ftell/fread/fwrite/fclose等函数用法

    1. fopen FILE * fopen(const char * path,const char * mode); 函数说明 参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代 ...

  10. c语言文件和结构体,C语言 文件操作 结构体与文件 fgetc fputc fread fwrite

    #include #include /*C语言 将键盘输入的字符写入文件*/ int main(int argc, char* argv[]) { FILE *fp; //文件指针 char str1 ...

最新文章

  1. 定制linux版本,Instalinux:在线自由定制 Linux 发行版
  2. Lightweight Render Pipeline
  3. nginx配置文件【转载】
  4. Asp.Net函数集
  5. MySql 连接报 SSL 警告问题
  6. 在VC++中生成伪随机数祥解
  7. 滤波器开发之四:基于算术平均的中值滤波器
  8. LightGBM常用模板
  9. 【白皮书分享】2020新式茶饮白皮书:数字化进阶-奈雪.pdf(附下载链接)
  10. android 创建文件夹,文件需要注意的格式
  11. 微录音--Android通话录音(vluyin-callrecorder)一款安卓通话录音软件
  12. 中国脑计划颠覆性创新之路九,进化的方向,脑科学,互联网和人工智能联合突破达尔文进化论局限
  13. win10如何删除输入法_顽固输入法exe文件无法删除,一招教你如何删除,原来这么简单...
  14. Surface Pro 6 黑苹果 CLOVER 配置文件,全球首发(转载)
  15. qlikview中日期问题的两个小结
  16. 抖音推荐算法的底层逻辑,互动率包含什么指标?为什么它这么重要?
  17. Microsoft Word 实用功能
  18. Web前端学习6个有效果软件,你值得拥有!
  19. Linux利用Esmtp 选择邮件服务器发送邮件(解决手机接收乱码)
  20. 专升本,学历毁了我的一生!

热门文章

  1. 网吧客户信息查询c语言,网吧经营管理之客户定位
  2. 关于window简体中文环境文件路径包含7种横杠的问题,及结论推广
  3. 数学建模技巧总结(一)
  4. 回顾 | Tencent Serverless Hours 线上分享会第一期
  5. #创新应用#飞流下载:下载娱乐两不误
  6. java中编写一个三角形类,java 三角形类Triangle java 三角形类 Triangle的用法详解
  7. 还原html默认打开方式,Win7旗舰版64位系统下如何还原文件默认打开方式
  8. unity 弹痕_Unity C# 用图片融合做弹孔
  9. Lick the habit 戒除恶习
  10. WEB/HTTP服务器搭建