标题
程序退出,内存上的数据销毁,将信息放在文件中,保证持久保存
文件
什么是文件:
在磁盘或者固态硬盘上的一段已命名的存储区
分类:
从文件功能的角度
- 程序文件:源程序文件,目标文件,可执行程序
- 数据文件:文件的内容不一定是程序,而是程序运行时读写的数据
根据数据的组织形式
- 二进制文件:以二进制方式存储
- 文本文件:以ASCII码的形式存储
在文件中,看到10000这个数字是字符1,0,0,0,0的ASCII码值,是文本文件
常见处理数据的输入输出都是以终端为对象的,即从终端的键盘输入数据,运行结果显示到显示器上。
将信息输出到磁盘上,需要时再从磁盘上把数据读取到内存中使用,这里处理的就是磁盘上文件。
文件在执行时内存所需要做的工作
文件指针
每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放该文件的相关信息(如文件的名字,文件状态及文件当前的位置等)。
这些信息是保存在一个结构体变量中。该结构体类型是有系统声明的,取名FILE(文件指针)
FILE* pf
定义一个文件指针
- printf、scanf两个函数叫标准输入输出函数,这里标准的含义就是:输出是打印到
屏幕,输入是从键盘上获取数据,- 文件的读写->是输入和输出的重定向
(重定向的意思就是:重新定义其输入输出方向,这是相对标准而言)
文件缓冲区
程序要读文件或写文件时,系统会为当前操作自动创建一块内存区域,这块内存区域乘为文件缓冲区
- 从内存向磁盘输出数据,
先送至内存中的缓冲区,充满缓冲区后,才一起送到磁盘上;- 从磁盘向计算机读入数据
则从磁盘文件中读取数据输入到内存缓冲区(充满缓冲区),然后再从缓冲区逐个将数据送到程序数据区;- 要想及时输出就需要刷新缓冲区,例如\n,就是一种刷新缓冲区的方式;
缓冲区的大小根据c编译系统决定。
操作文件
1.文件的打开与关闭函数
- b代表操作二进制文件
- +代表增加读写功能
- 只有w才能创建不存在的文件,并且w是覆盖写
2.文本行输入输出函数
3.格式化输入输出函数(有格式的数据输入到文件中)
4.二进制输入输出
从左往右执行
fwrite (&s, sizeof(struct s), 1, pf)
//被写入信息地址,一个元素的大小,写几个元素,要写入的哪个文件流中
调整文件指针位置
以当前位置为起点,根据偏移量调整pf文件指针
向前偏移offset<0,向后偏移offset>0
6.ftell与rewind
ftell文件指针的位置在哪
7.文件结束的判定
EOF:end of file,文件结束的标记
feof()
- 不是判断文件是否结束,而是判断文件是因什么原因结束
文本文件读取结束
- fgetc判断是否为EOF;
- fgets判断返回值是否为NULL;
二进制文件读取结束
- fread判断返回值是否小于实际要读的个数;
ferror()
:测试流上是否有一个错误
perorr(”随便一个字符串”)
,打印结果:“字符串:出错误信息”