1. 为什么使用文件
我们在学习C语言过程中发现,当我们所写的程序退出后,我们所写的数据就不存在了,下次运行程序的时候,还需要重新录入数据,我们使用文件就可以将数据直接存放在电脑的硬盘上,做到了数据的持久化。
2.什么是文件
说到文件我们首先应该先知道什么是文件,即存储在磁盘上的文件就是我们所说的文件。
在程序中,从文件功能的角度来把文件分为两类:
2.1 程序文件
包括源程序文件(.c),目标文件(.obj),可执行程序(.exe)
2.2 数据文件
程序运行时读写的数据,或者输出内容的文件。
我们所讨论的主要是数据文件。在以往学习的C程序中,都是以终端为输出对象的(从键盘输入,运行结果到显示器上),我们还可以把信息输出到磁盘中,需要的时候再把数据读到内存中使用,这里所处理的就是数据文件。
2.3文件名
一个文件要有一个
唯一的
文件标识,以便用户识别和引用。
(文件标识也就是我们所说的文件名)
文件名包含
3
部分:文件路径
+
文件名主干
+
文件后缀
3. 文件的打开和关闭
3.1文件指针
每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息。这些信息是保存在一个结构体变量中的。该结构体类型是由系统声明的,取名FILE.一般情况下都是通过通过FILE指针来维护这个结构的
FILE* pf ——这就是一个文件指针变量,
通过文件指针变量能够找到与它关联
的文件
3.2文件的打开与关闭
文件在读写之前需要打开文件,使用结束后需要关闭文件,规定使用fopen函数来打开文件,fclose来关闭文件
r 只读 | 打开一个已有的文本文件,允许读取文件。 |
w 只写 | 打开一个文本文件,允许写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会从文件的开头写入内容。如果文件存在,则该会被截断为零长度,重新写入。 |
a 追加 | 打开一个文本文件,以追加模式写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会在已有的文件内容中追加内容。 |
r+ 读写 | 打开一个文本文件,允许读写文件。 |
w+ 读写 | 打开一个文本文件,允许读写文件。如果文件已存在,则文件会被截断为零长度,如果文件不存在,则会创建一个新文件。 |
a+ 读写 | 打开一个文本文件,允许读写文件。如果文件不存在,则会创建一个新文件。读取会从文件的开头开始,写入则只能是追加模式。 |
rb 只读 |
为了输入数据,打开一个二进制文件 ,如果指定文件不存在则会出错。
|
wb
只写
|
为了输出数据,打开一个二进制文件,如果文件不存在,则会创建一个新文件。
|
ab
追加
|
向一个二进制文件尾添加数据,如果指定文件不存在则会出错。
|
rb+ 读写 |
为了读和写打开一个二进制文件,如果指定文件不存在则会出错。
|
wb+ 读写 | 为了读和写,新建一个新的二进制文件,如果文件不存在,则会创建一个新文件。 |
ab+ 读写 | 打开一个二进制文件,在文件尾进行读和写 ,如果文件不存在,则会创建一个新文件。 |
4. 文件的顺序读写
把信息从文件到内存中——读
把信息从内存到保存到文件中——写
关于 “读” 的一些函数
fgetc ——
字符输入函数
FILE * stream 是要读取字符所在文件的一个文件指针,返回值为读取字符的ASCII码的值
fgets ——
文本行输入函数
str 是从文件中读取的字符串,拷贝到str指向的地址;num 读取字符串的个数; stream 为指向想要读取文件的地址的指针
fscanf——
格式化输入函数
stream 是写入格式化数据的文件指针;format 是写入数据的格式(如:%s、%d……);...为一些其他的参数,数量与其格式说明符一样多,且该参数数已分配存储的指针
fread——
二进制输入
ptr 所读取数据要存储的内存块中;size 要读取的每个元素的大小(单位:字节);count 元素的个数每个元素的大小为字节大小;stream 读取数据的文件指针。
关于 “写” 的一些函数
fputc——
字符输出函数
character 是要写入的字符。stream 是指向单个字符写入的文件指针。fputs—— 文本行输出函数
str 是要写入的字符串;stream 是指向写入字符串的文件指针。
fprintf——
格式化输出函数
stream 是写入格式化数据的文件指针;format 是写入数据的格式(如:%s、%d……);...是一些其他的参数,数量与其格式说明符一样多,是数据的来源
fwrite——
二进制输出
ptr 指向要写入元素的指针;size 为要写入要写入每个元素的大小(单位:字节);count 元素的个数每个元素的大小为字节大小;stream 读取数据的文件指针。