C语言中操作文件-文件类型指针-学习笔记-59

引入

在上节讲的缓冲文件系统中,最关键的概念就是文件类型指针,简称为:文件指针。我们知道,要让程序操作一个文件,都需要将其加载到内存中,但是加载到内存之前,需要现经过缓冲区。所以,每个文件被使用时,都在内存中开辟一个相应的文件信息区,用来存放文件的有关信息。

有关信息包括:文件名、文件状态及文件当前位置等信息

这些信息都是保存在一个结构体变量中的,该结构体类型由系统声明,取名为FILE

存放文件信息的 FILE

在不同的 C 编译环境中 FILE 的内容可能不完全相同,我们来举个例子,FLIE 的结构体可能是这样的,它包含在stdio.h中:

1
2
3
4
5
6
7
8
9
10
11
typedef struct {
short level; // 缓冲区“满”或“空”的程度
unsigned flags; //文件状态标志
char fd; //文件描述符
unsigned char hold; //如缓冲区无内容不读取字符
short bsize; //缓冲区的大小
unsigned char * buffer; //数据缓冲区的位置
unsigned char* curp; //指针当前的指向
unsigned is temp; //临时文件指示器
short token; //用于有效性检查
}FILE;

我们看到 FILE 结构体的命名使用的是 typedef 然后结构体没有名称,而是在声明的最后初始化了 FILE 结构体名称。

使用 FILE 结构体

既然有了结构体名称,我们就可以声明一个 FILE 类型的结构体变量了:

1
2
FILE f1;
// 定义了一个结构体变量 f1 ,用它来存放一个文件的有关信息

上面结构体变量 f1中的信息,在系统打开文件时自动写入,不用担心。但是我们在实际使用时,一般不通过变量名来使用,而是通过指向该结构体的指针来引用。

1
2
FILE *f1;
//定义了一个FILE结构体指针变量 f1

我们可以使这个指针指向一个文件的文件信息区,通过该文件信息区就能够访问该文件了。(文件信息区是在内存中的,也是一个结构体,稍后介绍)。

也就是说,通过文件指针变量能够找到与它相关联的文件。

小提示
我们也通常称这种指向文件信息区的指针变量为文件的指针变量

尾巴

这是我的个人学习笔记,主要是应付考研复习使用,充斥着一些吐槽和个人观点,并不严谨,欢迎大家参考、指正。


-------------The End-------------
欢迎请我喝咖啡哦~!