X64站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2273|回复: 32

fopen 函数文档

  [复制链接]
  • TA的每日心情
    擦汗
    2023-12-22 12:28
  • 签到天数: 13 天

    [LV.3]偶尔看看II

    122

    主题

    257

    帖子

    6902

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    6902

    最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

    发表于 2023-12-8 14:33:49 | 显示全部楼层 |阅读模式
    fopen 函数文档


    函数概要:

    fopen 函数用于打开一个文件并返回文件指针。


    函数原型:

    • #include <stdio.h>
    • ...
    • FILE *fopen(const char *path, const char *mode);

    [color=rgb(51, 102, 153) !important]复制代码



    参数解析:

    参数
    含义
    path该参数是一个 C 语言字符串,指定了待打开的文件路径和文件名(见备注)
    mode1. 该参数是一个 C 语言字符串,指定了文件的打开模式

    2. 下面列举了所有可使用的打开模式:
    模式
    描述
    "r"1. 以只读的模式打开一个文本文件,从文件头开始读取
    2. 该文本文件必须存在
    "w"1. 以只写的模式打开一个文本文件,从文件头开始写入
    2. 如果文件不存在则创建一个新的文件
    3. 如果文件已存在则将文件的长度截断为 0(重新写入的内容将覆盖原有的所有内容)
    "a"1. 以追加的模式打开一个文本文件,从文件末尾追加内容
    2. 如果文件不存在则创建一个新的文件
    "r+"1. 以读和写的模式打开一个文本文件,从文件头开始读取和写入
    2. 该文件必须存在
    3. 该模式不会将文件的长度截断为 0(只覆盖重新写入的内容,原有的内容保留)
    "w+"1. 以读和写的模式打开一个文本文件,从文件头开始读取和写入
    2. 如果文件不存在则创建一个新的文件
    3. 如果文件已存在则将文件的长度截断为 0(重新写入的内容将覆盖原有的所有内容)
    "a+"1. 以读和追加的模式打开一个文本文件
    2. 如果文件不存在则创建一个新的文件
    3. 读取是从文件头开始,而写入则是在文件末尾追加
    "b"1. 与上面 6 中模式均可结合("rb", "wb", "ab", "r+b", "w+b", "a+b")
    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 语言是一致的,所以不管以文本模式打开还是二进制模式打开,结果都是一样的。


    演示:

    • #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;
    • }

    [color=rgb(51, 102, 153) !important]复制代码


    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    126

    帖子

    261

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    261
    发表于 2023-12-26 03:01:16 | 显示全部楼层
    支持学习,感谢楼主啊
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    122

    帖子

    253

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    253
    发表于 2023-12-26 03:38:02 | 显示全部楼层
    感谢分享~......
    回复

    使用道具 举报

    该用户从未签到

    1

    主题

    105

    帖子

    210

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    210
    发表于 2023-12-28 11:57:55 | 显示全部楼层
    非常漂亮!~。。。。
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    112

    帖子

    233

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    233
    发表于 2023-12-28 14:17:45 | 显示全部楼层
    xiexie楼主,学习中。
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    98

    帖子

    206

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    206
    发表于 2023-12-30 14:50:22 | 显示全部楼层
    非常不错的资料
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    90

    帖子

    190

    积分

    注册会员

    Rank: 2

    积分
    190
    发表于 2024-2-14 11:25:05 | 显示全部楼层
    看看学习一下
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    118

    帖子

    246

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    246
    发表于 2024-2-14 20:24:18 | 显示全部楼层
    非常感谢,谢谢分享
    回复

    使用道具 举报

    该用户从未签到

    2

    主题

    64

    帖子

    127

    积分

    注册会员

    Rank: 2

    积分
    127
    发表于 2024-2-16 21:05:10 | 显示全部楼层
    这论坛真不错呀。
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    142

    帖子

    293

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    293
    发表于 2024-2-17 03:18:43 | 显示全部楼层
    感谢分享,超想学的!!!
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表