头文件:
#include <stdio.h>
函数原型:
FILE *fopen(char *filename, char *mode);
功能:
打开文件
返回值:
打开成功:返回一个FILE * 类型的结构体指针;
打开失败:返回NULL;
参数说明:
filename:文件名(包含文件路径);
mode :打开方式
控制读写权限的字符串(必须指明) | |
r | 以“只读”方式打开文件。只允许读取,不允许写入。文件必须存在,否则打开失败。 |
w | 以“写入”方式打开文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么清空文件内容(相当于删除原文件,再创建一个新文件)。 |
a | 以“追加”方式打开文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么将写入的数据追加到文件的末尾(文件原有的内容保留)。 |
r+ | 以“读写”方式打开文件。既可以读取也可以写入,也就是随意更新文件。文件必须存在,否则打开失败。 |
w+ | 以“写入/更新”方式打开文件,相当于w 和r+ 叠加的效果。既可以读取也可以写入,也就是随意更新文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么清空文件内容(相当于删除原文件,再创建一个新文件)。 |
a+ | 以“追加/更新”方式打开文件,相当于a和r+叠加的效果。既可以读取也可以写入,也就是随意更新文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么将写入的数据追加到文件的末尾(文件原有的内容保留)。 |
控制读写方式的字符串(可以不写) | |
t | 文本文件。如果不写,默认为"t" 。 |
b | 二进制文件 |
代码示例:
#include <stdio.h>
#include <stdlib.h>
int main()
{FILE *fp;fp = fopen("C:/Desktop/test.bat","rb");if (fp == NULL) printf("打开失败\n");elseprintf("打开成功\n");system("pause");return 0;
}
运行结果:
打开成功
请按任意键继续. . .
总结:
调用 fopen() 函数时必须指明读写权限,但是可以不指明读写方式(此时默认为"t"
)。
读写权限和读写方式可以组合使用,但是必须将读写方式放在读写权限的中间或者尾部(换句话说,不能将读写方式放在读写权限的开头)。例如:
- 将读写方式放在读写权限的末尾:"rb"、"wt"、"ab"、"r+b"、"w+t"、"a+t"
- 将读写方式放在读写权限的中间:"rb+"、"wt+"、"ab+"