Loading... > **fopen 函数文档** **函数概要:** fopen 函数用于打开一个文件并返回文件指针。 **函数原型:** ```C #include <stdio.h> ... FILE *fopen(const char *path, const char *mode); ``` **参数解析:** | **参数** | **含义** | | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | path | 该参数是一个 C 语言字符串,指定了待打开的文件路径和文件名(见备注) | | mode | 1. 该参数是一个 C 语言字符串,指定了文件的打开模式<br/><br/>2. 下面列举了所有可使用的打开模式:<br/> | | - | - | | "r" | 1. 以只读的模式打开一个文本文件,从文件头开始读取<br/>2. 该文本文件必须存在 | | "w" | 1. 以只写的模式打开一个文本文件,从文件头开始写入<br/>2. 如果文件不存在则创建一个新的文件<br/>3. 如果文件已存在则将文件的长度截断为 0(重新写入的内容将覆盖原有的所有内容) | | "a" | 1. 以追加的模式打开一个文本文件,从文件末尾追加内容<br/>2. 如果文件不存在则创建一个新的文件 | | "r+" | 1. 以读和写的模式打开一个文本文件,从文件头开始读取和写入<br/>2. 该文件必须存在<br/>3. 该模式不会将文件的长度截断为 0(只覆盖重新写入的内容,原有的内容保留) | | "w+" | 1. 以读和写的模式打开一个文本文件,从文件头开始读取和写入<br/>2. 如果文件不存在则创建一个新的文件<br/>3. 如果文件已存在则将文件的长度截断为 0(重新写入的内容将覆盖原有的所有内容) | | "a+" | 1. 以读和追加的模式打开一个文本文件<br/>2. 如果文件不存在则创建一个新的文件<br/>3. 读取是从文件头开始,而写入则是在文件末尾追加 | | "b" | 1. 与上面 6 中模式均可结合("rb", "wb", "ab", "r+b", "w+b", "a+b")<br/>2. 其描述的含义一样,只不过操作的对象是二进制文件(见备注) | | **返回值:** 1. 如果文件打开成功,则返回一个指向 FILE 结构的文件指针; 2. 如果文件打开失败,则返回 NULL 并设置 errno 为指定的错误。 **备注:** 1. path 参数可以是相对路径(../fishc.txt)也可以是绝对路径(/home/FishC/fishc.txt),如果只给出文件名而不包含路径,则表示该文件在当前文件夹中 2. 从本质上来说,文本文件也是属于二进制文件的,只不过它存放的是相应的字符编码值。 3. 打开方式要区分文本模式和二进制模式的原因,主要是因为换行符的问题。C 语言用 \n 表示换行符,Unix 系统用 \n,Windows 系统用 \r\n,Mac 系统则用 \r。如果在 Windows 系统上以文本模式打开一个文件,从文件读到的 \r\n 将会自动转换成 \n,而写入文件则将 \n 替换为 \r\n。但如果以二进制模式打开则不会做这样的转换。Unix 系统的换行符跟 C 语言是一致的,所以不管以文本模式打开还是二进制模式打开,结果都是一样的。 **演示:** ```C #include <stdio.h> #include <stdlib.h> int main(void) { FILE *fp; int ch; if ((fp = fopen("hello.txt", "r")) == NULL) { printf("打开文件失败!\n"); exit(EXIT_FAILURE); } while ((ch = getc(fp)) != EOF) { putchar(ch); } fclose(fp); return 0; } ``` ![](https://blog.fivk.cn/usr/uploads/2021/02/1891241452.png) 最后修改:2021 年 09 月 12 日 © 转载自他站 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏