一. 为什么使用文件
我们在前面学习完结构体开始写通讯录的时候 当通讯录运行起来我们可以给它传输数据 此时数据是存放在内存中 当程序退出的时候 通讯录中的数据自然也就不复存在了,如果我们想要对于输入的数据进行持久化保存 这个时候我们就可以想到把数据存放在磁盘文件 存放在数据库等方式
所以说我们使用文件是为了数据的持久化保存
二. 什么是文件
我们在讨论文件的时候一般有两种 一种是程序文件 一种是数据文件
2.1 程序文件
包括源程序文件 目标文件 可执行文件
我依次截图给大家看看
源程序文件
目标文件
可执行文件
2.2 数据文件
文件的内容不一定是程序 也可以是程序运行时读写的数据 比如程序运行所需要读取数据的文件 或输出内容的文件
我们本章着重讨论数据文件
2.3 文件名
一个文件要有一个唯一的文件标识 以便于用户的识别和引用
文件名通常包含三部分 文件路径+文件名主干+文件后缀
例如 c:\code\test.txt
不知道这里大家还记不记得以前讲的转义字符的事
C语言常量与变量、字符串与转义字符-CSDN博客
如果我们要在c语言程序内使用的话 应该是这么打出来
c:\code\test.txt
三. 文件的打开和关闭
3.1 文件指针
缓冲文件系统中 关键的概念是“文件类型指针” 简称“文件指针”
我们先不看定义 直接开始用
我们说 形如
FILE* pf
这种格式 我们就把它称为文件指针 它指向一个文件
我们通过文件指针变量就能够找到与它关联的文件
3.2 文件的打开和关闭
我们在读写文件之前应该打开它 在使用结束之后应该关闭它
当文件读取失败的时候 它会返回一个空指针
直接上代码
当为r模式的时候 如果没有文件 则会返回一个空指针 并且会报错误信息
但是当为w或者a模式的时候 如果不存在这个文件 就会自己新建一个 并且不会报错误信息
四. 文件的顺序读写
功能 函数名 适用于
字符输入函数 fgetc 所有输入流
字符输出函数 fputc 所有输出流
文本行输入函数 fgets 所有输入流
文本行输出函数 fputs 所有输出流
格式化输入函数 fscanf 所有输入流
格式化输出函数 fprintf 所有输出流
二进制输入 fread 文件
二进制输出 fwrite 文件
我们还是直接上代码来看效果
那这次我们尝试从数据文件输入
当然啦 我们这里记得要改为只读模式 不然就会没办法读取数据
fputs 输出一行字符串
fgets 读取一行字符串
这里要注意的是gets的读取格式有点特殊 是这样子的
五. 文件的随机读写
5.1 fseek
根据文件指针的位置和偏移量来定位文件指针
5.2 ftell
返回文件指针相对于起始位置的偏移量
long int ftell ( FILE * stream );
上面的代码有使用的例子
5.3 rewind
让文件指针的位置回到文件的起始位置
void rewind ( FILE * stream );
这个很简单 记住指针回到了起始位置就好
上面的代码有使用的例子
以上便是本文所有内容了 ,如有错误请各位大佬不吝赐教,感谢留言