首页 理论教育C语言文件操作技巧-C语言程序设计实用教程

C语言文件操作技巧-C语言程序设计实用教程

【摘要】:在C 语言中,对文件的基本操作包括文件的打开与关闭、文件的读和写等。表9.1文件操作方式例如:打开当前目录下的C.DAT 文件,这是一个二进制文件,只允许进行读操作,并使fp 指针指向该文件。应该养成在程序终止前关闭所有文件的习惯,如果不关闭文件将会丢失数据。

在C 语言中,对文件的基本操作包括文件的打开与关闭、文件的读和写等。

1.文件的打开

文件打开后才能进行操作,打开文件可用C 语言提供的函数fopen 实现。

调用fopen 函数的格式如下:其中,“文件指针名”必须是说明为FILE 类型的指针变量;“文件名”是要打开的文件名,可以是字符串常量或是字符数组;“打开文件方式”是指文件的类型和操作要求,如表9.1 所示。

表9.1 文件操作方式

例如:

打开当前目录下的

C.DAT 文件,这是一个二进制文件,只允许进行读操作,并使fp 指针指向该文件。

以读文本方式打开指定路径下的文件。这里的路径字符串中的“\\”是转义字符,表示一个反斜杠。

2.文件的关闭

对于使用fopen 函数打开的文件,在完成文件操作后,都应关闭该文件,以防止文件被误用。“关闭”操作就是使文件指针变量不再与文件相关,不再能通过文件指针操作文件。文件关闭使用库函数fclose,函数格式如下:

例如:

当文件成功关闭,函数返回0,否则返回非0。

应该养成在程序终止前关闭所有文件的习惯,如果不关闭文件将会丢失数据。因为在向文件写数据时,是先将数据输出到缓冲区,待缓冲区充满后才正式输出给文件。如果当数据未充满缓冲区而程序结束运行,就会将缓冲区中的数据丢失。用fclose 函数关闭文件,可以避免这个问题,它先把缓冲区中的数据输出到磁盘文件,然后才释放文件指针变量。

3.字符读写函数

字符读写函数是以字节为单位的读写函数,每次可以从文件读取或者向文件中写入一个字符。

1)写字符函数fputc

该函数实现将一个字符写入指定的文件中,其格式如下:

其中,“字符”就是要往文件上写的字符,它可以是一个字符常量,也可以是一个字符变量;“文件指针”指向的是接收字符的文件。

说明:

(1)被写入的文件可以用写、读写和追加的方式打开,若用写或者读写的方式打开一个已经存在的文件时,文件的原有内容将被清除,从文件首开始写入字符。若使用追加的方式打开文件时,则写入的字符从文件末尾开始存放。被写入的文件如果不存在,则创建新文件。

(2)fputc 函数有一个返回值,若写入成功,则返回写入字符,否则返回一个EOF。

(3)每写入一个字符,文件内部位置指针向后移动一个字符。这里,文件指针和文件内部指针不是一回事。文件指针是指向整个文件,需要在程序中定义,只要不重新赋值,文件指针的值是不变的。文件内部的位置指针用以指示文件内部的当前读写位置,每读写一次,该指针就会向后移动,它不需要在程序中定义,而是由系统自动设置。

2)读字符函数fgetc

该函数实现从指定的文件中读取一个字符,其格式如下:

该函数返回值为输入的字符,若遇到文件结束或是出错,则返回EOF(-1)。

说明:

(1)在fgetc 函数调用中,读取的文件必须是以读或者读写方式打开。

(2)读取字符的结果也可以不向字符变量赋值。例如:

(3)每读出一个字符,文件内部位置指针向前移动一个字符。

【例9.1】从键盘输入字符,以输入“*”为止,逐个存到磁盘文件中,并且再读该文件,将写进的字符显示到屏幕上。程序如下:(www.chuimin.cn)

程序运行结果如图9.1 所示。

图9.1 程序运行结果

4.字符串读写函数

1)读字符串函数fgets

函数fgets 用于从指定的文件中读出一个字符串到字符数组中。其调用格式:

这里n 是一个正整数,表示从文件中读出的字符串不超过n-1 个字符,最后一个字符后面添加串结束标志’\0’。读取过程中若遇到换行符或者文件结束标志(EOF),则读取结束。

2)写字符函数 fputs

函数 fputs 用于将一个字符串写入指定的文件。其调用格式:

这里,字符串可以是字符常量,也可以是字符数组或者字符指针。

【例9.2】从键盘输入一个字符串,存到磁盘文件中,并且再读该文件,将写进的字符串显示到屏幕上。程序如下:

程序运行结果如图9.2 所示。

图9.2 程序运行结果

5.文件的数据块读写函数

1)数据块读函数fread()

该函数用于从指定的文件中读取规定大小的数据块,存入指定的内存缓冲区。其调用格式:

其中,p 是指向要输入/输出数据块的首地址的指针;size 是某类型数据存储空间的字节数(数据项大小);n 是从文件中读取的数据项数;fp 是文件指针变量。

2)数据块写函数fwrite()

该函数用于将一固定长度的数据块写入文件中,其调用格式:

说明:p,size,n,fp 的含义与函数fread()相同。

如果函数fread 和fwrite 在调用成功时,则返回值为n 的值,即输入/输出数据项数;如果调用失败(读写出错),则返回0。

6.文件格式化读写函数

文件中的输入/输出和数据的输入/输出基本类似。文件中的输入、输出函数为fprintf 和fscanf,它们都是格式化输入、输出函数。它与printf 和scanf 的区别在于它的读写对象是磁盘文件而不是键盘和显示器

1)文件格式化输入函数fscanf()

该函数用于按格式对文件进行输入操作。调用格式:

2)文件格式化输出函数fprintf()

该函数用于按格式对文件进行输出操作。调用格式:

如果fcanf 和fprintf 函数调用成功时,则返回输出的字节数;如果调用失败(出错或文件尾),则返回EOF。