目录
前言
如果没有⽂件,我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失 了,等再次运⾏程序,是看不到上次程序的数据的,如果要将数据进⾏持久化的保存,我们可以使⽤ ⽂件。
一、文件
文件是什么?
硬盘上的文件是文件
-
程序文件
程序文件包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行文件(windows环境为.exe)
下图为计算机的工作原理图,可以看到我们的程序区是在内储存器中的,计算机的硬件的基本结构是由储存器,控制器,运算器,输入和输出设备组成的(插入了个题外话,不过能帮助我们更好的理解)
-
数据文件
文件的内容不一定是程序,而是程序运行时读写的数据,比如下文中我们将的文件,是程序员从中读取数据的文件(通俗来讲就是给我们提供读取数据的文件)(如果理解不正确欢迎大家指正)
根据数据的组织形式,可分为以下两种
-
文本文件
文本文件通常是指在外存(如硬盘、闪存驱动器等)上以ASCII字符集或某种扩展的字符集(如Unicode)来储存数据的文件。
-
二进制文件
“二进制文件”是指在外存上以二进制形式储存的任何类型的文件,这些文件的数据并非直接以字符形式表示,而是以机器可以理解和执行的原始二进制编码存储。
-
文件名
一个文件要有一个唯一的文件标识,以便用户识别和引用
(文件标识)文件名包含三部分:文件路径+文件主干名+文件后缀(可以标识文件的类型和格式,某些情况可没有,但一般都要加上)
eg:c:\code\test.txt
那么一个数据在文件中是怎么储存的呢?
字符均以ASCII码的形式存储,数值型数据既可以用ASCII形式存储,也可以使用二进制(当然选择怎么的储存形式会根据具体的数据来考虑)
二、文件的打开和关闭
-
流和标准流
流:流(Stream)是一个通用的概念,用于表示数据的序列或连续流动
标准流:
- stdin-标准输入流,大多都是从键盘中输入
- stdout-标准输出流,大多数的环境中输出至显示器界面
- stderr-标准错误流,同上
以上三个流的类型是:FILE*,通常称为文件指针
-
文件指针
缓冲文件系统中,关键的概念是”文件类型指针“,简称”文件指针“
通过文件指针变量能够间接找到与他关联的文件
//定义一个文件指针
FILE*pf;
-
文件的打开和关闭
文件在读写之前应该先打开文件,在使用结束之后应该关闭文件
此时我们使用fopen函数来打开文件,用fclose函数来关闭文件
//打卡文件
FILE*pf=fopen(const char*filename,const char*mode);
//关闭文件
fclose(FILE*stream);
mode表示文件的打开模式,下面都是文件的打开模式
代码示例:
#include <stdio.h>
int main()
{
FILE*pfile;//定义一个文件指针变量
pfile=fopen("text.c","w");//打开一个text.c的文件,进行写
if(pfile==NULL)
{
perror("fopen");
return 1;//如果文件打开失败则结束程序
}
fputs("abcdefg",pfile);//将字符串写入文件
fclose(pfile);
pfile=NULL;
return 0;
}
2.文件的顺序读写
具体的函数的介绍,过于复杂和繁琐,需要讲解的话,大家可以在评论区留言需要,我可以下一次出