1
C语言程序设计
1.10.3 9.3 文  件

9.3 文  件

在本章9.1节中已指出,在C语言中,“文件”可以表示磁盘文件、光盘文件和各种外部设备。

每个文件都有文件名,用户通过指定的文件名可以访问需要使用的文件,但不同的文件具有不同的访问特性,例如:磁盘文件可以允许随机存取;键盘只能用于输入数据而不能输出数据;终端显示器或打印机只能用于输出数据而不能输入数据。

在C语言中,无论是一般磁盘文件还是设备文件,都可以通过文件结构类型的数据集合进行输入输出操作。当使用流式函数打开一个文件进行输入输出时,被打开的文件有一个类型为FILE的结构与之绑定在一起,该结构是编译程序在stdio.h中定义的,它包含有文件操作的基本信息。这些信息有:

·文件名。

·文件状态特征。

·文件数据缓冲区位置及大小。

·文件数据缓冲区当前读/写位置。

·文件数据缓冲区填充程度等。

因此,凡是使用FILE型文件的程序,在程序的开头必须嵌入stdio.h头部文件。当一个流式文件被打开时,C编译程序自动建立该文件的FILE结构并返回一个指向FILE结构类型的指针,由于该指针指向被打开的文件,其后只能通过这个指针变量来访问被打开的文件。可以认为,在程序中,这个指向被打开文件的指针就代表了被打开的文件,使用各种文件处理函数进行文件处理。

关闭文件的操作是使文件脱离一个特定的流,以释放文件打开时建立的FILE结构。对于输出流,当关闭这个流时,则将与这个流有关的缓冲区的内容写入到外部设备,以保证没有残留信息留在缓冲区内。当运行程序结束并返回操作系统时,或调用exit()函数返回操作系统时,所有的文件都会自动关闭。