【C 语言】文件操作 ( fopen 文件打开方式详解 )「建议收藏」

大家好,又见面了,我是你们的朋友全栈君。

本文目录如下:

一、fopen 函数二、fopen 函数文件打开方式详解1、r2、r+3、rb+4、rb+ 与 r+ 对比5、rw+6、w7、w+8、a9、a+三、文件打开方式总结

一、fopen 函数—

fopen 函数用于打开文件,其函数原型如下:

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

其中,const char *filename 参数表示文件名,const char *mode 参数表示文件的打开方式。

二、fopen 函数文件打开方式详解—

1、rr:以只读方式打开文件,文件必须存在。如果文件存在,则文件打开成功;如果文件不存在,则返回的 FILE p 为 NULL。通过判定 FILE 类型的返回值是否为 NULL,可以判断文件是否打开成功,文件不存在、权限不足等都会导致文件打开失败。

#include int main(){    // 以 r 方式打开文件    FILE *p = fopen("D:a.txt", "r");    if(p == NULL)    {        printf("File Open Failed !");    }else    {        printf("File Open Success !");        // 如果打开成功,则需要关闭文件        fclose(p);    }    printf("Main End");    return 0;}

文件存在时打开成功:

【C 语言】文件操作 ( fopen 文件打开方式详解 )「建议收藏」

文件不存在时打开失败:

【C 语言】文件操作 ( fopen 文件打开方式详解 )「建议收藏」

2、r+r+:以读写方式打开文件,文件必须存在。如果文件存在,则文件打开成功;如果文件不存在,则返回的 FILE *p 为 NULL。与 r 类似,凡是与 r 相关的,文件必须存在。

3、rb+rb+:以读写的方式打开二进制文件,文件必须存在。如果文件存在,则文件打开成功;如果文件不存在,则返回的 FILE *p 为 NULL。与 r 类似,凡是与 r 相关的,文件必须存在。

代码示例:

#include int main(){    // 以 rb+ 读写方式 打开 二进制文件    FILE *p = fopen("D:a.txt", "rb+");    if(p == NULL)    {        printf("File Open Failed !");    }else    {        printf("File Open Success !");        fputs("Hello", p);        fputs("World", p);        // 如果打开成功,则需要关闭文件        fclose(p);    }    printf("Main End");    return 0;}

执行结果:使用文本查看工具输出

HelloWorld

使用二进制查看工具,输出结果:其中 0x0A 指的是 ” 字符:

48 65 6C 6C 6F 0A 57 6F 72 6C 64 0A

【C 语言】文件操作 ( fopen 文件打开方式详解 )「建议收藏」

4、rb+ 与 r+ 对比在上面使用 “rb+” 的方式打开文件,是以二进制形式打开的文件,二进制输出内容为:

48 65 6C 6C 6F 0A 57 6F 72 6C 64 0A

下面的代码中,使用 “r+” 的方式打开文件,是以文本形式打开的文件,二进制输出内容为:

48 65 6C 6C 6F 0D 0A 57 6F 72 6C 64 0D 0A

其中 0D 是 ”,0A 是 ”,文本形式中换行被解析为 “”,二进制形式只有 ”。在 Windows 系统下,文本都是以 “” 作为换行符号;在 Linux/Unix 系统下,文本都是以 ” 作为换行符号。

代码示例:

#include int main(){    // 以 r+ 读写方式 打开 文件    FILE *p = fopen("D:a.txt", "r+");    if(p == NULL)    {        printf("File Open Failed !");    }else    {        printf("File Open Success !");        fputs("Hello", p);        fputs("World", p);        // 如果打开成功,则需要关闭文件        fclose(p);    }    printf("Main End");    return 0;}

【C 语言】文件操作 ( fopen 文件打开方式详解 )「建议收藏」

文本方式下,换行是 0D 0A,二进制方式下,将数据原封不动输出。在 Windows 下使用文本模式和二进制模式读写数据是不同的,但在 Linux/Unix 下使用文本模式和二进制模式读写文件没有区别

5、rw+rw+:以读写方式打开文本文件,允许读写。如果文件存在,则文件打开成功;如果文件不存在,则返回的 FILE *p 为 NULL。写出时,将该文件原有数据覆盖,即文件长度清零,删除文件内容,重新写入文件内容。

代码示例:

#include int main(){    // 以 rw+ 读写方式 打开文件    FILE *p = fopen("D:a.txt", "rw+");    if(p == NULL)    {        printf("File Open Failed !");    }else    {        printf("File Open Success !");        fputs("Hello", p);        fputs("World", p);        // 如果打开成功,则需要关闭文件        fclose(p);    }    printf("Main End");    return 0;}

如果文件存在,则文件打开成功,写出数据成功,写出时覆盖之前的内容:

【C 语言】文件操作 ( fopen 文件打开方式详解 )「建议收藏」

YOO必优科技-AI写作 YOO必优科技-AI写作

智能图文创作平台,让内容创作更简单

YOO必优科技-AI写作 38 查看详情 YOO必优科技-AI写作

如果文件不存在,则打开失败:

【C 语言】文件操作 ( fopen 文件打开方式详解 )「建议收藏」

6、ww:以写的方式打开文件。如果文件不存在,就创建文件;如果文件存在,覆盖原有数据重新写入数据。写出时,将该文件原有数据覆盖,即文件长度清零,删除文件内容,重新写入文件内容。

代码示例:

#include int main(){    // 以 w 方式打开文件    FILE *p = fopen("D:a.txt", "w");    if(p == NULL)    {        printf("File Open Failed !");    }else    {        fputs("hello", p);        // 如果打开成功,则需要关闭文件        fclose(p);    }    printf("Main End");    return 0;}

执行结果:该程序无论执行多少次,显示的结果都是 hello:

【C 语言】文件操作 ( fopen 文件打开方式详解 )「建议收藏」

7、w+w+:以读写的方式打开文件。如果文件不存在,就创建文件;如果文件存在,覆盖原有数据重新写入数据。写出时,将该文件原有数据覆盖,即文件长度清零,删除文件内容,重新写入文件内容。

代码示例:

#include int main(){    // 以 w+ 读写方式 打开 文件    FILE *p = fopen("D:a.txt", "w+");    if(p == NULL)    {        printf("File Open Failed !");    }else    {        printf("File Open Success !");        fputs("Hello", p);        fputs("World", p);        // 如果打开成功,则需要关闭文件        fclose(p);    }    printf("Main End");    return 0;}

执行结果:

如果文件不存在,则直接创建文件,并写出数据:

【C 语言】文件操作 ( fopen 文件打开方式详解 )「建议收藏」

如果文件存在,则覆盖原来的文件,重新写入数据:

【C 语言】文件操作 ( fopen 文件打开方式详解 )「建议收藏」

8、aa:以追加方式打开写文件。如果文件不存在,则创建文件;如果文件存在,则新写入的数据会被追加到文件末尾,文件原来的数据会被保留。

代码示例:

#include int main(){    // 以 a 追加方式打开文件    // 如果文件不存在创建文件    // 如果文件存在,则追加数据    FILE *p = fopen("D:a.txt", "a");    if(p == NULL)    {        printf("File Open Failed !");    }else    {        // 如果文件不存在创建文件        // 如果文件存在,则追加数据        fputs("hello", p);        // 如果打开成功,则需要关闭文件        fclose(p);    }    printf("Main End");    return 0;}

该程序执行两次之后,a.txt 文本中变成了两个 hello 文本,这是文件追加效果:

【C 语言】文件操作 ( fopen 文件打开方式详解 )「建议收藏」

9、a+a+:以追加方式打开读写文件。如果文件不存在,则创建文件;如果文件存在,则新写入的数据会被追加到文件末尾,文件原来的数据会被保留。该操作与 a 操作区别是可读。

三、文件打开方式总结—

r:只读方式打开文件,文件必须存在;文件不存在打开失败。

+:读写方式打开文件。

w:打开只写文件,文件不存在创建文件,文件存在覆盖文件。

a:打开只写文件,文件不存在创建文件,文件存在追加文件。

发布者:全栈程序员栈长,转载请注明出处:https://www.php.cn/link/a60c71bd110ebc4d6916e16b8ca24fda原文链接:https://www.php.cn/link/c8377ad2a50fb65de28b11cfc628d75c

以上就是【C 语言】文件操作 ( fopen 文件打开方式详解 )「建议收藏」的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/814783.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月27日 00:26:28
下一篇 2025年11月27日 00:32:08

相关推荐

发表回复

登录后才能评论
关注微信