文档介绍:第13章文件
学习目标:
了解文件基础知识。
理解文件类型指针。
掌握文件的打开与关闭:用fopen( )函数打开一个文件和用fclose( )函数关闭一个文件。
掌握文件的读写与定位。
了解C语言中几种常用文件检测函数:feof( ) 函数、ferror( ) 函数和clearerr( ) 函数。
在程序运行时,程序本身和数据一般都存放在内存中。当程序运行结束后,存放在内存中的数据被释放。
如果需要长期保存程序运行所需的原始数据,或程序运行产生的结果,就必须以文件形式存储到外部存储介质上。
文件基础知识
本节介绍的是C语言中的文件基础知识。
文件是指存放在外部存储介质上的数据集合。为标识一个文件,每个文件都必须有一个文件名,其一般结构为:
主文件名[.扩展名]
文件命名规则,遵循操作系统的约定。
可以从不同的角度对文件进行分类:
(1)根据文件的内容,可分为程序文件和数据文件,程序文件又可分为源文件、目标文件和可执行文件。
(2)根据文件的组织形式,可分为顺序存取文件和随机存取文件。
(3)根据文件的存储形式,可分为ASCII码文件和二进制文件。
ASCII码文件的每1个字节存储1个字符,因而便于对字符进行逐个处理。但一般占用存储空间较多,而且要花费转换时间(二进制与ASCII码之间的转换)。
二进制文件是把内存中的数据,原样输出到磁盘文件中。这样可以节省存储空间和转换时间,但1个字节并不对应1个字符,不能直接输出字符形式。
所谓读文件是指,将磁盘文件中的数据传送到计算机内存的操作。
所谓写文件是指,从计算机内存向磁盘文件中传送数据的操作。
C语言将文件看作是由一个一个的字符(ASCII码文件)或字节(二进制文件)组成的,将这种文件称为流式文件。而在其它高级语言中,组成文件的基本单位是记录,对文件操作的基本单位也是记录。
系统给每个打开的文件都在内存中开辟一个区域,用于存放文件的有关信息(如文件名、文件位置等)。这些信息保存在一个结构类型变量中,该结构类型由系统定义、取名为FILE。
注意:结构类型名“FILE”必须大写。
C的缓冲文件系统
所谓缓冲文件系统是指,系统自动地在内存区为每个正在使用的文件开辟一个缓冲区。
从内存向磁盘输出数据时,必须首先输出到缓冲区中。待缓冲区装满后,再一起输出到磁盘文件中。
从磁盘文件向内存读入数据时,则正好相反:首先将一批数据读入到缓冲区中,再从缓冲区中将数据逐个送到程序数据区。
文件类型指针
本节将介绍C语言中的文件类型指针。缓冲文件系统中,关键的概念是“文件指针”,它在C语言中用一个指针变量指向一个文件,这个指针称为文件指针。通过文件指针就可对它所指的文件进行各种操作。
定义说明文件指针的一般形式为:
FILE* 指针变量标识符;
其中FILE 应为大写,它实际上是由系统定义的一个结构,该结构中含有文件名、文件状态和文件当前位置等信息。在编写源程序时不必关心FILE 结构的细节。
例如:FILE *fp; 表示fp 是指向FILE 结构的指针变量,通过fp 即可找存放某个文件信息的结构变量,然后按结构变量提供的信息找到该文件,实施对文件的操作。习惯上也笼统地把fp 称为指向一个文件的指针。
实际上FILE是一个新的数据类型。它是Turbo , 称之为结构指针。有关结构的概念前面的章节中已详细介绍过, 这里只要将FILE理解为一个包括了文件管理有关信息的数据结构, 即在打开文件时必须先定义一个文件指针。
文件的打开
本节介绍的是文件的打开。对文件进行操作之前,必须先打开该文件。C语言规定了标准输入输出函数库,用fopen()函数打开一个文件。
文件的打开──fopen()函数
fopen 函数用来打开一个文件,其调用的一般形式为:
文件指针名= fopen(文件名,使用文件方式)
其中,“文件指针名”必须是被说明为FILE 类型的指针变量,“文件名”是被打开文件的文件名。“使用文件方式”是指文件的类型和操作要求。“文件名”是字符串常量或字符串数组。例如:
FILE *fp;
fp=("file x","r");
其意义是在当前目录下打开文件file x, 只允许进行“读”操作,并使fp 指向该文件。又如:
FILE *fphzk
fphzk=("d:\\binary',"rb")
其意义是打开D 驱动器磁盘的根目录下的文件binary, 这是一个二进制文件,只允许按二进制方式进行读操作。两个反斜线“\\ ”中的第一个表示转义字符,第二个表