9.1.1 文件的打开
C 语言中,打开文件需要使用 fopen 函数,该函数原型如下:
FILE *fopen(const char *fname, const char *mode);
fopen 函数的返回值是一个文件流,其实就是一个 FILE 结构体类型的指针。函数执行成功会返回一个指向 FILE 结构体变量的指针,这个结构体变量中包括了文件的名称、大小、属性、缓冲区等相关信息;若函数执行失败,则返回的是空指针。因此,可以通过对 fopen 函数所返回的文件流进行判断,从而获知文件的打开是否成功。
fopen 函数的两个参数都是字符类型的常量指针,即指向字符串常量的指针。其中 fname 用于指定所要打开的文件,可以是文件的绝对路径(从盘符开始的文件路径),也可以是文件的相对路径(从当前工作目录开始的文件路径)。参数 mode 用于指定文件的打开模式,以确定用何种方式对文件进行处理及得到相关的文件流。可选的打开模式如表 9.1 所示。
表 9.1 文件的打开模式

从文件流的角度来看,用“r”模式打开文件会得到一个文件的输入流,用“w”模式打开文件会得到一个文件的输出流,而用带“+”模式打开文件会得到文件的输入、输出流。下面使用 fopen 函数来打开一个文件。例如:

代码中定义了一个 FILE 结构体类型的指针变量 pfile,并调用 fopen 函数,以“r”(只读)模式打开 D 盘(确保 Windows 系统下有 D 盘)下面的文本文件 test.txt,即想得到一个文件的输入流。fopen 函数的返回值被初始化给指针变量 pfile。需注意的是,在 fopen 函数的第一个字符串参数中,使用的是绝对路径“D:\test.txt”,由于斜杠“\”在 C 语言中是作为转义字符来使用的,因此,必须使用“\\”(连续的两个斜杠),才能表示一个斜杠字符本身。
接下来通过 if 语句对指针 pfile 进行检查,若 pfile 不为空指针,则表示文件打开成功,由 printf 函数在控制台窗口打印输出“File opened successfully.”;若 pfile 为空指针,则表示文件打开失败,通过 printf 函数在控制台窗口打印输出“Failed to open file.”。
编译运行程序,如果在计算机的 D 盘中有 test.txt 这个文件的话,就会打印如下结果:
File opened successfully.
若 D 盘下没有 test.txt 这个文件,则会得到如下结果:
Failed to open file.
若是将 fopen 函数的文件打开模式修改为只写,即使用模式字符串“w”,即表示想得到一个文件的输出流。例如:
FILE *pfile = fopen("D:\\test.txt", "w");
则无论在 D 盘(确保 Windows 系统下有 D 盘)下是否存在 test.txt 文件,都会打印输出文件打开成功的结果。因为即使在 D 盘下没有 test.txt 这个文件,它也会自动创建一个。但若此时在 test.txt 文件中手工输入一些内容并保存,当再次执行该程序后,会发现 test.txt 文件中原先输入的内容被清空了,即 test.txt 变成了一个空文件。
如果既想打开一个文件,得到文件的输出流,而又不想让文件的内容被清空,那么就使用含有字符 a 的模式字符串,例如:
FILE *pfile = fopen("D:\\test.txt", "a");
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论