-
1 文字讲解
-
2 视频讲解
§9.2.1 文件的打开和关闭
ANSI 文件系统也叫做格式化文件系统或缓冲文件系统。缓冲文件系统是指系统自动地在内存区中为每个正在使用的文件名开辟一个缓冲区。从内存向磁盘输出数据必须先送到内存中的缓冲区,装满后再一起送到磁盘。如果从磁盘向内存读入数据,则一次从磁盘文件将一批数据输入到内存缓冲区中(充满缓冲区),然后再从缓冲区中逐个地将数据送到程序数据区中给程序变量。设立缓冲区的目的在于缓解CPU运行速度和内、外存数据交换速率不匹配的矛盾,提高系统的整体运行效率。
缓冲文件系统中,关键的概念是“文件指针”。每个被使用的文件都在内存中开辟一个区,用来存放文件的有关信息(如文件的名字、文件的状态及文件的当前位置等),这些信息保存在个结构体类型变量FILE中。
ANSI C规定了标准输入/输出函数库,用fopen()涵数来实现打开文件,fopen()涵数的调用方式通常为:
FILE *fp;
*fp =fopen(文件名,文件使用方式);
例如“fp=fopen(fnl.dat","r"):”表示以读方式打开一个磁盘文件fnl.dat。fopen(通数返回指向fml.dat文件的指针并赋给fp,这样fp就和fnl.dat相联系了,或者说,fp指向了fnl.dat文件。可以看出,在打开一个文件时,通知编译系统3个信息:需要打开的磁盘文件名(可包含文件路径)、文件的使用方式、与磁盘文件相联系的文件指针变量,文件的使用方式如表9-1所示。
| 文件的使用方式 | 含义 |
| “r” (读) | 为输入打开一个已存在的文本文件 |
| "w" (写) | 为输出打开一个新的文本文件 |
| "a” (追加) | 向文本文件尾追加数据 |
| "rb" (只读) | 为输入打开一个二进制文件 |
| "wb" (写) | 为输出打开一个新的二进制文件 |
| "ab" (追加) | 向二进制文件尾追加数据 |
| “r+”(读写) | 为读写打开一个文本文件 |
| "rb+" (读写) | 为输出打开一个二进制文件 |
说明:
① 用”w”或”wb"方式打开的文件只能用于建立一个新文件,若该文件已经存在,则重写该文件。
② 用““或”b”方式只能打开一个已存在的文件,且只能读该文件的内容,而不能改写该文件。
③ 若正确执行 fopen( ) 函数,则返回一个非空指针值:否则返回一个空指针值NULL 。
§9.2.2 文件的关闭
用 fclose( ) 函数关闭文件。
格式:
fclose(文件指针变量):
例如“fclose(fp):”,此函数可解除文件指针和文件的联系,并在解除这种联系之前进行善后处理(如把缓冲区中的剩余数据写入文件)。忽略对文件的关闭操作将会造成数据丢失,因此关闭文件的操作是必不可少的。


