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

简介: 【C 语言】文件操作 ( C 语言中的文件操作函数 | 磁盘与内存缓冲区 | 缓冲区工作机制 )

文章目录

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

二、磁盘与内存缓冲区

三、缓冲区工作机制





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


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


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






二、磁盘与内存缓冲区


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



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


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



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



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


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






三、缓冲区工作机制


缓冲区工作机制 :


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


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


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



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


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



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


缓冲区满了

调用 fclose 关闭文件函数


目录
相关文章
|
1天前
|
Java C语言 C++
定义C语言的int main()函数
定义C语言的int main()函数
|
3天前
|
存储 移动开发 C语言
技术心得记录:嵌入式开发中常用到的C语言库函数
技术心得记录:嵌入式开发中常用到的C语言库函数
|
3天前
|
Java 程序员 Linux
探索C语言宝库:从基础到进阶的干货知识(类型变量+条件循环+函数模块+指针+内存+文件)
探索C语言宝库:从基础到进阶的干货知识(类型变量+条件循环+函数模块+指针+内存+文件)
10 0
|
3天前
|
C语言
C语言实现猜数字游戏:代码详解与函数解析
C语言实现猜数字游戏:代码详解与函数解析
7 0
|
3天前
|
程序员 C语言
C语言内存管理:malloc、calloc、realloc与free函数详解
C语言内存管理:malloc、calloc、realloc与free函数详解
5 0
|
3天前
|
存储 编译器 C语言
C语言的联合体:一种节省内存的数据结构
C语言的联合体:一种节省内存的数据结构
7 0
|
3天前
|
C语言
C语言中的函数指针、指针函数与函数回调
C语言中的函数指针、指针函数与函数回调
6 0
|
3天前
|
存储 C语言
C语言中的变量与函数详解
C语言中的变量与函数详解
4 0
|
4天前
|
存储 C语言
C语言中的printf函数详解
C语言中的printf函数详解
11 0
有 3 个进程 P1、P2、P3 协作解决文件打印问题。P1 将文件记录从磁盘读入内存的缓冲区 1,每执行一次读一个记录 ;P2 将缓冲区 1 中的内容复制到缓冲区 2 中,每执行一次复制一个记录 ;
有 3 个进程 P1、P2、P3 协作解决文件打印问题。P1 将文件记录从磁盘读入内存的缓冲区 1,每执行一次读一个记录 ;P2 将缓冲区 1 中的内容复制到缓冲区 2 中,每执行一次复制一个记录 ;