程序设计导引及在线实践

Page 68

1.16 文件读写 既可以从文件中读取数据, 也可以向文件中写入数据。读写文件之前,首先要打开文件。 读写文件结束后,要关闭文件。C/C++提供了一系列库函数,声明于stdio.h中,用于进行文 件操作。这里介绍其中几个常用的文件操作库函数:

1.16.1 用fopen 打开文件 该函数的原型为: FILE *fopen(const char *filename, const char *mode); “FILE” 是在 stdio.h中定义的一个结构,用于存放和文件有关的信息,具体内容我 们可以不需要知道。第一个参数是文件名,第二个参数是打开文件的模式。 打开文件的模式主要有以下几种: “r” :以文本方式打开文件,只进行读操作。 “w”: 以文本方式打开文件,只进行写操作。 “a”: 以文本方式打开文件,只往其末尾添加内容。 “rb” :以二进制方式打开文件,只进行读操作。 “wb”: 以二进制方式打开文件,只进行写操作。 “ab”: 以二进制方式打开文件,只往其末尾添加内容。 “r+” :以文本方式打开文件,既读取其数据,也要往文件中写入数据。 “r+b”:以二进制方式打开文件,既读取其数据,也要往文件中写入数据。 “文本方式”适用于文本文件,即能在“记事本”中打开的,人能够看明白其含义的文 件。“二进制方式”适用于任何文件,包括文本文件,音频文件,视频文件,图像文件,可 执行文件等。只不过文本文件用“文本方式”打开,以后读写会方便一些。 fopen函数返回一个 FILE * 类型的指针,称为文件指针。该指针指向的 FILE 类型变 量中,存放着关于文件的一些信息,比如,文件的“当前位置”(稍后会详述)。文件打开 后,对文件的读写操作就不再使用文件名,而都是通过fopen函数返回的指针进行。

如果试图以只读的方式打开一个并不存在的文件、或因其他原因(比如没有权限)导致 文件打开失败, 则fopen返回NULL指针。如果以读写或只写的方式打开一个不存在的文件, 那么该文件就会被创建出来。 FILE * fp = fopen( “c:\\data\\report.txt”, “r”); 上面的语句以只读方式打开了文件 “c:\\data\\report.txt”。给定文件名的时候也 可以不给路径,那么fopen函数执行时就在当前目录下寻找该文件: FILE * fp = fopen( “report.txt”, “r”); 如果当前目录下没有report.txt,则fopen函数返回NULL,此后当然不能进行读写操作 了。 66


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.