1 C 语言文件的输入与输出 一. 文件指针 每个被使用的文件都在内存中开辟一个区,用来存放文件的有关信息(如文件的名字、文什状态及文件当前位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是由系统定义的,取名为FILE。在sudio.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 类型的区,存放文件的有关信息。 2 FILE 类型的数组:FILE f[ 5] ;定义了一个结构体数组f, 它有5个元素,可以用来存放5 个文件的信息。 有了文件指针类型,就可以用它来定义文件指针变量,用文件指针变量来访问文件,其形式为:FILE *指针变量名。例如:FILE *fp;其中fp 是指向要访问文件的指针变量。例如,通过文件指针访问text.exe 文件,有如下的访问: FILE *fp; fp=fopen(“ text.exe” , “ rb” ); ch=getc(fp); 第一行语句只定义了一个没有指向的文件指针fp,第二行是打开文件text.exe,并同时确定对访问文件的操作方式(此处对访问的文件只进行读操作), 这时给文件结构中的成员信息赋值,并使fp 指向text.exe文件,第三行是利用文件指针对文件进行操作,操作方式应当与打开文件时确定的方式一致(只读)。由此可以看出,操作文件过程中不出现对文件结构成员的访问语句。 如果有n个文件,一般应设n个指针变量,使它们分别指向n个文件,确定打开方式,利用有关函数对文件指针操作即可。例如:下面语句定义了三个文件指针,在程序中就可以处理三个不同的文件。 FILE *fa, *fb, *fc; 3 二.文件的打开与关闭 2.1 文件的打开(fopen 函数) 打开文件的首要工作就是要改变文件的标志,使其由闭到开,并且把下面信息告诉编译系统: ①需要打开的文件名,也就是准备访问的文件的名字; ②使用文件的方式(“读”还是“写”等); ③让哪一个指针变量指向被打开的文件。 打开函数的原型是定义在stdio.h 头文件中的fopen 函数,其...