对磁盘文件的操作大体包括打开文件、读文件、写文件、关闭文件和删除文件等操作。在对文件进行读/写操作之前要先打开,使用完要关闭。所谓打开文件,实际上是将程序和所要操作的文件建立联系,并给用户指定的文件在内存中分配一个FILE结构区,使文件指针指向该文件,以便进行其他操作。关闭文件时则断开指针与文件之间的联系,禁止再对该文件进行操作。在C语言中,文件操作都是由库函数来完成的。
1.文件的打开
文件打开后才能进行操作,通过调用fopen ()函数打开一个文件,其调用的一般形式为:
其中,文件指针名必须是被说明为FILE类型的指针变量。文件名是被打开文件的文件名;文件名是文件的唯一标识,用户通过文件名对文件引用。文件名包含文件路径、主文件名和扩展名3部分。文件使用方式是指文件的类型和访问方式。文件的使用方式共有12种,表12-1给出了它们的符号及其意义。例如:
其意义是在当前目录下打开文件data,只允许进行读操作,并使fp指向该文件。
又如:
其意义是打开C盘根目录下的文件data.txt,只允许按二进制方式进行写操作。两个反斜线“\\”中的第一个表示转义字符,第二个表示根目录。fp指向data.txt文件。
表12-1 文件的使用方式
说明:
(1)文件使用方式由r,w,a,t,b,+这6个字符拼成,各字符的含义是:r(读)、w(写)、a(追加)、t(文本文件,可省略不写)、b(二进制文件)、+(读和写)。
(2)凡用“r”打开一个文件,该文件必须已经存在,且只能从该文件读出数据给计算机作为输入数据。
(3)用“w”打开的文件只能将计算机中的数据输出到该文件,完成文件数据的写入。若打开的文件不存在,则以指定的文件名创建该文件;若打开的文件已经存在,则删除该文件(相当于覆盖原来的文件),重新创建一个新文件。(www.daowen.com)
(4)若要向一个已存在的文件的末尾追加新的数据,只能用“a”的方式打开文件。但是该文件须已存在,否则将会出错。
(5)r+和w+都是以读/写的方式打开文件,不同的是r+方式打开的文件须已存在,而w+方式则需要先建立文件,再向文件写入数据,最后读出该写入数据。
(6)以r+和w+方式打开的文件,读/写总是从文件的起始位置开始,而以rb+和Wb +方式打开的文件,读/写的起始位置可以通过位置函数设定。
(7)文本文件的读/写要进行编码的转换,把一个文本文件读入内存时,要将ASCII码转换成二进制码,而把文件以文本方式写入磁盘,要把二进制码转换成ASCII码,因此文本文件的读/写要花费较多的转换时间,而对二进制文件的读/写不存在这种转换。因此,二进制文件的读/写操作更节省时间。
无论采用哪种文件操作方式,文件打开函数都会返回一个FILE类型的指针。如果文件打开正确,fopen ()函数的返回值就是文件在内存中的起始地址,将该地址赋给文件指针fp ,在fp和打开文件之间建立联系,就可以通过文件指针fp对此文件进行操作;如果文件没有被成功打开,fopen ()将返回一个空指针NULL。为了确保文件操作正常进行,有必要在程序中检测文件是否正常打开。常用下面的程序段来打开一个文件,并检查是否打开成功。
该程序段调用了fopen ()函数,以只读的方式打开文件c:\\data.txt。打开后其返回值赋给fp。如果返回的指针为空则打开失败,输出“file can not open!”,然后调用函数exit ( ) ,终止程序运行。exit ()函数属于C语言的库函数,定义在“stdio.h”中。如果fp非空,就可以通过fp指针对文件进行读操作。
2.文件的关闭
为了避免数据丢失,在文件使用完毕后,应使用关闭文件函数fclose ()把文件关闭,文件指针不再指向该文件。
通过调用fclose ()函数关闭一个文件,其调用的一般形式为:
例如:fclose ( fp) ;
正常完成关闭文件操作时,fclose ()函数返回值为0。如返回EOF,EOF在“stdio.h”文件中定义为-1,表示有错误发生。
终止程序前应关闭文件,如果不关闭文件将会丢失数据。计算机在向文件写数据时,会将数据先输出到数据缓冲区,待缓冲区满后才正式输出给文件。若数据未充满缓冲区而程序结束运行,就会将缓冲区中的数据丢失。用fclose ()函数关闭文件时先将缓冲区的数据输出到磁盘文件,然后才释放文件指针变量,这样可以避免数据丢失。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。