您的当前位置:首页正文

C语言-文件操作

来源:九壹网

为什么要进行文件操作:

写通讯录的程序,当通讯录运行起来的时候,可以给通讯录中增加、删除数据,此时数据是存放在内存中,当程序退出的时候,通讯录中的数据自然就不存在了,等下次运行通讯 录程序的时候,数据又得重新录入,如果使用这样的通讯录就很难受。所以在通讯录中要想要信息记录下来,并且数据达到持久,就需要进行文件管理。

什么是文件

存储在硬盘上面的就是文件,文件又分为程序文件和数据文件

程序文件包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj,可执行程序(windows环境后缀为.exe)。

文件的打开和关闭

每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的
名字,文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是
由系统声明的,取名FILE。
下面我们可以创建一个FILE* 的指针变量 :
通过该指针我们就能找到与它关联的文件。
ANSIC 规定使用 fopen 函数来打开文件, fclose 来关闭文件。

文本文件和二进制文件

根据数据的组织形式,数据文件被称为 文本文件 或者 二进制文件
数据在内存中以二进制的形式存储,如果不加转换的输出到外存,就是 二进制文件
如果要求在外存上以 ASCII 码的形式存储,则需要在存储前转换。以 ASCII 字符的形式存储的文件就是 本文件
测试代码:

文件读取结束判定

在文件读取过程中,不能用 feof 函数的返回值直接来判断文件的是否结束。
feof 的作用是:当文件读取结束的时候,判断是读取结束的原因是否是:遇到文件尾结束。
1. 文本文件读取是否结束,判断返回值是否为 EOF fgetc ),或者 NULL fgets
例如:
fgetc 判断是否为 EOF .
fgets 判断返回值是否为 NULL .
2. 二进制文件的读取结束判断,判断返回值是否小于实际要读的个数。
例如:
fread 判断返回值是否小于实际要读的个数。

文件缓冲区

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

因篇幅问题不能全部显示,请点此查看更多更全内容

Top