🍑🍑🍑为什么使用文件🍑🍑🍑
首先来说下为什么使用文件操作吧,在前面的内容写过一篇通讯录的文章,实际上那个通讯录哪怕我们能够使用动态内存分配给它完成了。但是,依旧存在很大的问题。
实际上在通讯录那个程序当中,我们给 cmd 当中输入指令的时候。此时的数据是会被存放在🍅内存🍅当中的。当我们程序要退出的时候,我们在通讯录当中所输入的数据就自然而然的不存在了。当我们需要下次运行的时候,数据又要重新输入。那么此时这就非常的难受。因此,我们输入的数据当中必须是要放在🍅硬盘🍅当中才能够保存数据。
📢我再来打个比方吧📢:我们玩游戏的时候,有些游戏是不是需要保存当前数据。此时,当我们玩了半个小时的游戏。我们需要进行保存数据是吧,不然你这半小时所玩的东西就会丢失,也就是游戏当中不会替你去保存当前的数据。就会回到你上一次所保存的数据,张三同学不知道我这样说你是否明白了(doge)(☆-v-)
于是,我们想要实现数据不丢失的话,就必须要了解这个文件操作的使用,明白了mie张三同学。
🍓🍓什么是文件🍓🍓
文件实际上就是我们在硬盘上,所看到的这些东西都是文件,包括[C]盘当中也都是文件。
但是在我们的程序设计当中一般都是会有两种文件的↓
🍉程序文件🍉
包括源文件的后缀名.c
目标文件(Windows环境后缀为.obj)
可以执行程序(Windows环境后为.exe)
那么张三你现在应该知道编译运行过程是什么了吧,张三:不知道,我💥💥💥
那么这里说下实际上也就是上面按照顺序的编译过程:
.c源程序[编译到],obj目标文件再[链接],exe执行文件。
所以,计算机是不可以直接执行由任意高级余元编写的程序.
🍉数据文件🍉
文件的内容不一定是程序,而是程序运行的时候所读写的数据。比如在程序运行的时候需要从中读取数据当中的文件,或者是输出内容的为文件。
🍉文件名🍉
文件名是文件存在的标识,操作系统根据文件名来对其进行控制和管理。不同的操作系统对文件命名的规则略有不同,即文件名的格式和长度因系统而异。为了方便人们区分计算机中的不同文件,而给每个文件设定一个指定的名称。由文件主名和扩展名组成。
文件名包含③部分:🍅文件路径🍅+🍅文件名主干🍅+🍅文件后缀🍅
例如:c:\code\test.txt ,为了方便起见,文件名表示通常被称之为文件名。
🍓🍓文件指针🍓🍓
在缓冲文件系统当中,关键的概念实际上是"文件类型指针",简称"文件指针"。
每个被使用的文件都在内存中开辟了一个相对应的文件的信息区,用来存放文件的相关信息。这些信息都是保存在一个结构体变量当中的,该结构体是由系统进行声明的,取名为:🍅FILE🍅
下面就是 vs 2013 当中编译环境所提供的 stdio.h 头文件中有以下文件类型声明↓
当然,这个 FILE 在不同编译器上的设计可能是不同的,不是绝对的。
每当我们打开一个文件的时候,系统会根据文件的情况自动会创建一个FILE结构的变量,并进行填充其中的信息。当然我们在使用的时候无需关心这些。
一般都是通过一个FILE的指针来进行维护这个结构体变量,使用起来更加方便。
此时,我们就可以创建一个FILE*的指针变量↓
定义 pf 是一个指向FILE类型数据的指针变量。可以使 pf 指向某一个文件的文件信息区也就是指向 FILE 当中结构体的信息。那么通过该文件的信息区就可以访问该文件。也就是说,通过文件指针变量能够找到与它所相互关联的文件。