文章目录

  • 一、C 语言中的文件操作函数
  • 二、磁盘与内存缓冲区
  • 三、缓冲区工作机制

一、C 语言中的文件操作函数


读取 文本文件 可以使用 getc , fgets , fscanf 函数 , 向 文本文件 写出数据可以使用 putc , fputs , fprintf 函数 ;

读取 二进制文件 可以使用 fread 函数 , 向 二进制文件 写出数据可以使用 fwrite 函数 ;

二、磁盘与内存缓冲区


上述所有读写文件的函数 , 都是缓冲区函数 , 即 C 语言中的文件操作 , 都是缓冲区函数 ;

磁盘 是由 操作系统 进行读写的 , 用户写的程序 , 不能直接操作磁盘 ;

操作系统 提供 读写文件的 系统调用 接口 , 在该接口上 是 C 语言的库函数 , 最上层就是 用户程序 ;

如果要操作硬件磁盘 , 就需要知道磁盘的驱动程序 , 磁盘扇区操作等 , 这就比较复杂了 ;

C 语言库函数 中 , 维护了一个缓冲区 , 这个缓冲区是 内存 中的缓冲区 ;

使用 C 语言文件操作函数 读写的 数据 , 不是直接来自磁盘 , 而是来自 内存中缓冲区 ;

三、缓冲区工作机制


缓冲区工作机制 :

如果 缓冲区大小 64KB , 假如使用 C 语言库函数 fread 读取一个字节数据 , 实际上会从磁盘文件中读取 64KB 数据 , 放入内存缓冲区中 ;

这是因为 读写内存的效率 远远高于 读写磁盘的效率 ;

这样的好处是 , 读取第 2 个字节时 , 可以直接从内存中读取 , 不需要再次读写磁盘 ;

该机制可以 增加用户程序的执行效率 , 减少磁盘访问次数 ;

磁盘有读写寿命 , 读写次数到了 , 磁盘就会报废 ;

缓冲区内容写入磁盘的时机 :

  • 缓冲区满了
  • 调用 fclose 关闭文件函数

【C 语言】文件操作 ( C 语言中的文件操作函数 | 磁盘与内存缓冲区 | 缓冲区工作机制 )相关推荐

  1. android 读写文件 简书,Android 中的文件操作

    Android 文件操作 概述 Android 中的文件操作主要涉及到两个部分,一个是内部存储的读写,一个是外部存储的读写两者的主要区别如下表: 内部存储 外部存储 始终可用 它并非始终可用,因为用户 ...

  2. ESRI的Shapefile文件向Google Earth中KML文件的格式转换

    转载自http://wenku.baidu.com/link?url=3TG7c0cERbdnZwFBLq6n2v-chB-k4ja5ikNYSyRQHyLf4yvYCGBEGrlhch8GD5e-9 ...

  3. linux查找文件模糊名字,linux中模糊查找文件

    1.在当前目录下搜索指定文件: find . -name test.txt 2.在当前目录下模糊搜索文件: find . -name '*.txt' 3.在当前目录下搜索特定属性的文件: find . ...

  4. java遍历给定目录,树形结构输出所有文件,包括子目录中的文件

    http://www.cnblogs.com/jenson138/p/4691418.html import java.io.File;public class ReadDirectory {// 文 ...

  5. C语言实现MATLAB 6.5中M文件的方法

    摘要:本文着重描述了运用MATLAB命令将M文件翻译为C语言程序,并修改为可直接调用的C语言函数的方法,使用该方法所需要注意的方法局限性和MATLAB版本差异的影响.运用该方法将能够使C语言能直接使用 ...

  6. java语言 文件上传,java中实现文件上传的方法

    java中实现文件上传的方法 发布时间:2020-06-19 10:29:11 来源:亿速云 阅读:86 作者:Leah 这篇文章给大家分享的是java中实现文件上传的方法,相信大部分人都还没学会这个 ...

  7. c语言定义小数无穷小,OC中常用的数学函数以及浮点处理函数

    在编程中我们总要进行一些数学运算以及数字处理,尤其是浮点数的运算和处理,这篇文章主要介绍C语言下的数学库.而其他语言中的数学库函数的定义以及最终实现也是通过对C数学库的调用来完成的,其内容大同小异,因 ...

  8. python打开文件注意事项_Python 中关于文件操作的注意事项

    文件操作 #打开文件 f = open('要打开的文件路径',mode = 'r/w/a', encoding = '文件原来写入时的编码') #操作 data = f.read() #读取 f.wr ...

  9. python打开一个不存在的文件报错,python中的文件操作(一)

    文件就是把一些数据存储存放起来,可以让程序下一次执行的时候直接使用,而不必重新制作一份,省时省力. python操作文件的步骤 1.将文件抽象成一个python的对象 2.对这个对象,进行读/写的动作 ...

最新文章

  1. How to call DLL and LIB files (SDK)
  2. Thread.join()练习
  3. C++STL常用遍历算法
  4. oppo设备怎么样无需root激活XPOSED框架的教程
  5. 小程序上传图片到七牛云(支持多张上传,预览,删除)
  6. ExtJs学习笔记(21)-使用XTemplate结合WCF显示数据
  7. HDU-4089 Activation (概率DP求概率)
  8. 2016年3-8,哦,好日子
  9. VBKiller使用说明
  10. Java思维导图(七)
  11. 大话2正在连接登录服务器,大话西游手游服务器连接失败进不去解决办法
  12. 基波、谐波、谐波次数
  13. 山东大学项目实训——解决微信小程序无法获得用户信息问题
  14. 律师程海认为北京市办理暂住证行为违法
  15. bandwagon centos6_x86_bbr
  16. 【问题解决】Invalid bound statement(not found)
  17. Spring MVC 参数校验
  18. netty解决TCP粘包/拆包导致的半包读写问题的三种方案
  19. 物联网设备数据流转之数据如何存储:TDengine集成SpringBoot, MyBatisPlus实现ORM与CRUD
  20. 网络安全:常见的网络协议

热门文章

  1. Arduino 与 MPU6050 姿态解算+ PROCESSING
  2. 好看的一本历史小说《大秦帝国》啊
  3. 【清华集训2016】Alice和Bob又在玩游戏
  4. 正方形分成16份,将1到16填入其中。让行和列都是从大到小。问一共有多少种方法?...
  5. Java 调用 C++ (Java 调用 dll)康哥手把手教你
  6. sqlserver 查找数据混排
  7. k8s nodeport下访问请求未被分发到所有node的排错(转)
  8. poj 2449 A*求k短路
  9. iOS网络编程开发—HTTP协议
  10. 文档型数据库设计模式-如何存储树形数据