1. 为什么使⽤⽂件?
如果没有⽂件,我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失 了,等再次运⾏程序,是看不到上次程序的数据的,如果要将数据进⾏持久化的保存,我们可以使用文件。
2. 什么是⽂件?
磁盘上的⽂件是⽂件。 但是在程序设计中,我们⼀般谈的⽂件有两种:程序⽂件、数据⽂件(从⽂件功能的⻆度来分类 的)。
2.1 程序⽂件
程序⽂件包括源程序⽂件(后缀为.c),⽬标⽂件(windows环境后缀为.obj),可执⾏程序(windows 环境后缀为.exe)。
举例:
整个test.c就是程序文件
将代码进行打印后,同时会生成一些文件
这些文件都是程序文件,或者可以说是程序在编译的过程中产生的临时文件
2.2 数据文件
文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。
数据文件和程序文件的关系:
通过程序文件来处理数据文件的,要么从数据文件中拿取数据,要么在数据文件中保存数据。
这种程序文件和数据文件的关系类似与程序在终端中拿取数据或者程序输出数据到终端中一样。
2.3 文件名
一个文件要有一个唯一的文件标识,以便用户识别和引用。
文件名包含3部分:文件路径+文件名主干+文件后缀
例如:c:\code\test.txt
在c:\code\test.txt中,c:\code\是文件的路径,test是文件名,.test是文件的尾缀
为了方便起见,文件标识常被称为文件名 。
3. ⼆进制⽂件和⽂本⽂件?
概念:
文本文件:存储文本信息的文件。
二进制的文件: 存储二进制信息的文件 。
存储问题:
一个数据在文件中是怎么存储的呢?
字符一律以ASCII形式存储,数值型数据既可以用ASCII形式存储,也可以使用二进制形式存储。
如有整数10000,如果以ASCII码的形式输出到磁盘,则磁盘中占用5个字节(每个字符一个字节),而二进制形式输出,则在磁盘上只占4个字节 (VS2019测试)。
如果10000换算成二进制为直接丢到文件中存储, 这就是二进制文件。
代码举例:
#include <stdio.h>
int main()
{
int a = 10000;
FILE* pf = fopen("test.txt", "wb");
fwrite(&a, 4, 1, pf);//⼆进制的形式写到⽂件中
fclose(pf);
pf = NULL;
return 0;
}
fopen打开一个文件
wb是w是写,b是二进制形式,wb就是二进制形式写
fwrite(&a,4,1,pf);将a这个地址所在的数据,1个4字节的数据写到由pf管理的文件中,也就是写到test.c文件中。
这个代码的意思就是把10000用二进制形式写到文件中。