C语言打开文件

C语言打开文件教程

C 语言 中,我们需要操作 文件,那么首先我们就必须要打开文件,打开文件操作完毕后,还需要 关闭文件,如果只打开文件,不关闭文件,会造成系统资源的浪费。

在 C 语言中,打开文件使用 fopen 函数,打开文件时,我们需要知道文件的路径和打开文件的方式。

C语言fopen函数详解

语法

FILE *fopen(char *filename, char *mode);

参数

参数 描述
filename 要打开的文件路径。
mode 要打开的文件的方式。

返回值

如果打开成功,则返回一个 FILE 指针,否则,返回 NULL

头文件

fopen 函数在 stdio.h 的头文件里面。

技术细节

fopen() 会获取文件信息,包括文件名、文件状态、当前读写位置等,并将这些信息保存到一个 FILE 类型的 结构体 变量中,然后将该 变量 的地址返回。

C语言fopen函数打开文件方式

不同的操作需要不同的文件权限。如果,只想读取文件中的数据的话,“只读” 权限就够了;既想读取又想写入数据的话,“读写” 权限就是必须的了。

另外,文件也有不同的类型,按照数据的存储方式可以分为二进制文件和文本文件,它们的操作细节是不同的。在调用 fopen() 函数时,这些信息都必须提供,称为 “文件打开方式”。

控制读写权限的字符串

打开方式 说明
“r” 以 “只读” 方式打开文件。只允许读取,不允许写入。文件必须存在,否则打开失败。
“w” 以 “写入” 方式打开文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么清空文件内容(相当于删除原文件,再创建一个新文件)。
“a” 以 “追加” 方式打开文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么将写入的数据追加到文件的末尾(文件原有的内容保留)。
“r+” 以 “读写” 方式打开文件。既可以读取也可以写入,也就是随意更新文件。文件必须存在,否则打开失败。
“w+” 以 “写入/更新” 方式打开文件,相当于 wr+ 叠加的效果。既可以读取也可以写入,也就是随意更新文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么清空文件内容(相当于删除原文件,再创建一个新文件)。
“a+” 以 “追加/更新” 方式打开文件,相当于 a 和 r+ 叠加的效果。既可以读取也可以写入,也就是随意更新文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么将写入的数据追加到文件的末尾(文件原有的内容保留)。

控制读写方式的字符串

打开方式 说明
“t” 文本文件。如果不写,默认为"t"
“b” 二进制文件。

说明

调用 fopen() 函数时必须指明读写权限,但是可以不指明读写方式(此时默认为 "t")。读写权限和读写方式可以组合使用,但是必须将读写方式放在读写权限的中间或者尾部(换句话说,不能将读写方式放在读写权限的开头)。例如:

  • 将读写方式放在读写权限的末尾:“rb”、“wt”、“ab”、“r+b”、“w+t”、“a+t”。
  • 将读写方式放在读写权限的中间:“rb+”、“wt+”、“ab+”。

整体来说,文件打开方式由 r、w、a、t、b、+ 六个字符拼成,各字符的含义是:

字符 描述
r read,读
w write,写
a append,追加
t text,文本文件
b banary,二进制文件
+ 读和写

案例

打开文件

使用 fopen 函数打开文件

#include <stdio.h> #include <stdlib.h> int main() { printf("嗨客网(www.haicoder.net)\n\n"); FILE *fp = NULL; if ( (fp = fopen("c:\\1.txt", "rt")) == NULL ) { puts("Open file failed\n"); return; } else { puts("Open file success\n"); return; } return 0; }

程序运行后,控制台输出如下:

01_c语言fopen打开文件.png

我们使用了 fopen 函数,打开了一个 c 盘的文件,以只读的方式读取该文件,并将读取到的内容赋值给 FILE 类型的 fp 指针

接着,我们使用 if 语句 判断,我们打开的文件指针是否为 NULL,如果为 NULL,则表明打开文件失败,否则,则表示打开文件成功。

这里,因为,我们文件不存在,所以打开文件失败,现在,我们在 C 盘创建该文件,再次使用上面的程序打开该文件,此时程序运行后,控制台输出如下:

02_c语言fopen打开文件.png

此时,因为文件存在,所以,我们的文件打开成功了。

C语言打开文件教程总结

在 C 语言中,打开文件使用 fopen 函数,打开文件时,我们需要知道文件的路径和打开文件的方式。