• 【C语言】文件输入输出操作


    打开文件

    • fopen(): 创建一个新文件/打开一个已有文件, 初始化类型FILE的一个对象, 包含所有用于控制流的必要信息
      • FILE *fopen(const char *filename, const char *mode);
      • 模式:
        • r: 打开一个已有文本文件, 允许读取
        • w: 打开一个文本文件, 允许写入; 若无文件则新建一个; 若有则重新写入
        • a: 打开一个文本文件, 追加模式写入; 若无文件则新建一个; 追加内容
        • r+: 打开一个文本文件, 允许读写
        • w+: 打开一个文本文件, 允许读写; 无文件则新建一个; 若有则重新写入
        • a+: 打开一个文本文件, 允许读写; 无文件则新建一个; 读取从头开始, 写入追加

    关闭文件

    • fclose():
      • int fclose(FILE *fp);
      • 关闭成功返回0
      • 关闭失败返回EOF

    写入文件

    • fputc(): 把参数c的字符值写入fp指向的输出流, 成功则返回写入字符, 失败则返回EOF
      • int fputc(int c, FILE *fp);
    • fputs(): 将字符串s写入fp指向的输出流, 成功则返回非负值, 失败则返回EOF
      • int fputs(const char *s, FILE *fp);
    • fprintf(): 一个字符串写入文件
      • int fprintf(FILE *fp, const char *format, ...)
    #include 
    int main()
    {
        FILE *fp = NULL;
        fp = fopen("/tmp/test.txt", "w+");
        fputs("Shenzhen", fp);
        fprintf(fp, "Tianjin");
        fclose(fp);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    读取文件

    • fgetc(): 从fp指向的输入文件读取一个字符, 返回读取的字符, 失败则返回EOF
      • int fget(FILE * fp);
    • fgets(): 从fp指向的输入流读取n-1个字符, 若途中遇到换行符/文件末尾EOF, 返回读取到的字符
      • char *fgets(char *buf, int n, FILE *fp);
    • fscanf(): 从文件读取字符串, 首个空格/换行符停止
      • int fscanf(FILE *fp, const char *format, ...)
    #include 
    
    #include 
     
    int main()
    {
       FILE *fp = NULL;
       char buff[255];
     
       fp = fopen("/tmp/test.txt", "r");
       fscanf(fp, "%s", buff);
       printf("1: %s\n", buff );
     
       fgets(buff, 255, (FILE*)fp);
       printf("2: %s\n", buff );
       
       fgets(buff, 255, (FILE*)fp);
       printf("3: %s\n", buff );
       fclose(fp);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    首先,fscanf()方法只读取了This,因为它在后边遇到了一个空格.其次,调用fgets()读取剩余的部分,直到行尾.最后,调用fgets()完整地读取第二行.

  • 相关阅读:
    学生党福音 电子教材下载网站推荐
    外卖项目02---员工管理业务开发
    29.vuex
    【HTML+CSS】零碎知识点
    智能驾驶、智能家居、智能工业中的 AI 关键基础设施,半导体厂商恩智浦的角色是什么?
    申报仙桃市2023年度知识产权项目主体、类别及程序
    准入控制器(Admission Controller):ResourceQuota,ImagePolicyWebhook
    Java开发:JVM篇-类加载内存分析
    【Eclipse】解决插件下载速度太慢
    Linux NetworkManager 的使用方法(nmcli和nmtui)
  • 原文地址:https://blog.csdn.net/weixin_46143152/article/details/126683701