首页 理论教育C语言程序设计第2版:文件打开与关闭

C语言程序设计第2版:文件打开与关闭

【摘要】:对文件操作之前,必须先打开该文件;操作结束后,应立即关闭文件,以免数据丢失。若打开的文件不存在,则以指定的文件名建立该文件;若打开的文件已经存在,则将该文件删去,重建一个新文件。对二进制文件的读写则不存在这种转换。

对文件操作之前,必须先打开该文件;操作结束后,应立即关闭文件,以免数据丢失。

1.文件打开函数fopen()

fopen()函数用来打开一个文件,其调用的一般形式为:

文件指针名=fopen(文件名,使用文件方式)

其中,“文件指针名”必须是被说明为FILE类型的指针变量,“文件名”是被打开文件的文件名,“使用文件方式”是指文件的类型和操作要求。

“文件名”是字符串常量或字符串数组。例如:

FILE*fp;

fp=(“fileA.txt”,“r”);

其意义是在当前目录下打开文件fileA.txt,只允许进行“读”操作,并使fp指向该文件。

又如:

FILE*fphzk;

fphzk=(“c:\\hzk16”,“rb”);

其意义是打开C驱动器磁盘的根目录下的文件hzk16,这是一个二进制文件,只允许按二进制方式进行读操作。两个反斜线“\\”中的第一个表示转义字符,第二个表示根目录。“使用文件方式”共有12种,下面给出了它们的符号和意义,如表9.1所示。

表9.1 文件使用方式

说明:

(1)文件使用方式由r,w,a,t,b,+六个字符组成,各字符的含义是:

r(read):读;

w(write):写;

a(append):追加;(www.chuimin.cn)

t(text):文本文件,可省略不写;

b(banary):二进制文件;

+:读和写。

(2)凡用“r”打开一个文件时,该文件必须已经存在,且只能从该文件读出。

(3)用“w”打开的文件只能向该文件写入。若打开的文件不存在,则以指定的文件名建立该文件;若打开的文件已经存在,则将该文件删去,重建一个新文件。

(4)若要向一个已存在的文件追加新的信息,只能用“a”方式打开文件,但此时该文件必须是存在的,否则将会出错。

(5)在打开一个文件时,如果出错,fopen()函数将返回一个空指针值NULL。在程序中可以用这一信息来判别是否完成打开文件的工作,并作相应的处理。因此常用以下程序段打开文件:

上述语句先检查打开的操作是否出错,如果有错就在屏幕上输出“cannot open this file!”。exit()函数的作用是关闭所有文件,终止正在调用的过程。待用户检查出错误,修改后再运行。exit()函数是带参数调用的,参数是int型。参数为0时,表明这个停止属正常停止;当参数为其他值时,用参数指出造成停止的错误类型。使用exit()函数时,必须在程序前使用预编译命令“#include “stdlib.h””。

(6)把一个文本文件读入内存时,要将ASCII码转换成二进制码;而把文件以文本方式写入磁盘时,也要把二进制码转换成ASCII码。因此,文本文件的读写要花费较多的转换时间。对二进制文件的读写则不存在这种转换。

(7)标准输入文件(键盘)、标准输出文件(显示器)、标准出错输出(出错信息)是由系统打开的,可直接使用。

2.文件的关闭函数fclose()

文件一旦使用完毕,应用关闭文件函数fclose()把文件关闭,以避免发生文件的数据丢失等错误。

fclose()函数调用的一般形式是:

fclose(文件指针);

例如:

fclose(fp);

正常完成关闭文件操作时,fclose()函数返回值为0。如返回非零值则表示有错误发生,可用函数ferror()函数来测试。