在C语言中当建立或调用一个磁盘文件时,必须了解如下信息:与该文件对应的内存缓冲区的地址,文件当前的读写位置,文件操作的方式,是文本文件还是二进制文件,是杜操作还是写操作.
对于操作系统而言,关键的概念是”文件指针”.每个被使用的文件都在内存中开辟一段存储单元,用来存放文件的有关信息.这些信息是保存在一个结构体变量中的.该结构体类型变量是由系统定义的,取名为FILE.有几个文件就建立几个这样的结构体变量,分别存放各文件的有关信息.同时返回对应的FILE结构指针.
FILE结构体类型在stdio.h文件中定义如下:
Typedef struct
{
short level; //缓冲区”满”或”空”的程度//
unsigned flags; //文件状态标志//
char fd; //文件描述符//
unsigned char hold; //如无缓冲区不读取字符//
short bsize; //缓冲区大小//
unsigned char *buffer; //数据缓冲区的位置//
unsigned char *curp; //指针,当前指向//
unsigned istemp; //临时文件,指示器//
short token; //用于有效性检查//
}FILE;
有了FILE结构体类型之后,可以用它来定义若干个FILE类型的变量,以便存放若干个文件的信息.例如:
FILE f[5];
定义了一个结构体数组f,有5个元素,可以存放5个文件的信息.
程序中可以设置一个指向该结构体变量的指针变量,通过它来访问FILE结构体变量,例如:
FILE *fp;
定义了一个FILE结构体类型的指针变量,当程序打开一个文件,就得到对应的FILE结构指针.只要把指针值赋给指针变量fp,fp就指向了这个FILE结构体的变量,也就是指向这个文件了.