10.1.2 文件的处理方法
C语言对文件的处理方法有两种:一种叫“缓冲文件系统”,一种叫“非缓冲文件系统”。
所谓缓冲文件系统是指系统自动地在内存区为每一个正在使用的文件开辟一个缓冲区。从内存向外部存储器输出数据必须先送到内存中的缓冲区,装满缓冲区后才一起送出去。如果从外部存储器向内存读入数据,则一次从磁盘文件将一批数据输入到内存缓冲区(充满缓冲区),然后再从缓冲区逐个地将数据送到程序数据区(给程序变量),如图10-1所示。
图10-1
所谓“非缓冲文件系统”是指系统不自动开辟确定大小的缓冲区,而由程序为每个文件设定缓冲区。
在UNIX系统下,用缓冲文件系统来处理文本文件,用非缓冲文件系统处理二进制文件。用缓冲文件系统进行的输入输出又称为高级(或高层)磁盘输入输出(高层I/O),用非缓冲文件系统进行的输入输出又称为低级(低层)输入输出系统。ANSI C标准决定不采用非缓冲文件系统,而只采用缓冲文件系统。即既用缓冲文件系统处理文本文件,也用它来处理二进制文件,也就是将缓冲文件系统扩充为可以处理二进制文件。
C语言提供了相应的文件操作函数,它们都是标准库函数,用它们可以实现对文件的读写、打开和关闭等操作。
本章主要学习掌握的是用缓冲文件系统处理文件。
缓冲文件系统中,关键的概念是“文件指针”。在对一个缓冲文件进行操作时,系统需要许多控制信息,如:文件名、文件当前的读写位置、与该文件对应的内存缓冲区的地址、缓冲区中未被处理的字符数、文件的操作方式等。缓冲文件系统为每一个文件定义一个FILE型的结构体变量来存放这些控制信息。FILE定义在头文件stdio.h中,声明如下:
有了结构体FILE类型以后,可以用它来定义若干个FILE类型的变量,以便存放若干个文件的信息。
fp是一个指向FILE类型结构体的指针变量,通过该结构体变量中的文件信息能够访问该文件。也就是说,通过文件指针变量能够找到与它相关的文件。如有n个文件,一般应设n 个FILE类型结构体的指针变量,使它们分别指向n个文件,实现对文件的访问。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。