• C语言-09-文件操作


    文件类型

    • 文本文件(ASCII)
      • 简单的文本文件,可用任何文字处理程序阅读
    • 二进制文件
      • 包含 在ASCII及扩展ASCII字符中编写的数据或程序指令 的文件,通常图形文件及文字处理程序等计算机程序都属于二进制文件

    文件访问模式

    • 文本文件
      • “r”
        • 打开一个已有的文本文件,允许读取文件
      • “w”
        • 打开一个文本文件,允许写入文件。若文件不存在,则创建一个新的文件
      • “a”
        • 打开一个文本文件,以追加模式写入文件。若文件不存在,则创建一个新的文件
      • “r+”
        • 打开一个文本文件,允许读写文件
      • “w+”
        • 打开一个文本文件,允许读写文件,文件会被截断为0长度。若文件不存在,则创建一个新的文件
      • “a+”
        • 打开一个文本文件,允许读写文件。从头读取,追加写入。若文件不存在,则创建一个新的文件
    • 二进制文件(对应于文本文件访问模式)
      • “rb” ~> “r”
      • “wb” ~> “w”
      • “ab” ~> “a”
      • “rb+” ~> “r+”
      • “r+b” ~> “r+”
      • “wb+” ~> “w+”
      • “w+b” ~> “w+”
      • “ab+” ~> “a+”
      • “a+b” ~> “a+”

    文件操作流程

    • 打开文件

      // filename:文件路径名  mode:文件访问模式
      FILE *fopen(const char * filename, const char * mode)
      
    • 操作文件

      • 读取文件

        // 读取一个字符
        int fgetc(FILE *fp)
        // 读取 n-1 个字符(字符串后面有一个字符串结束标志,buf的长度为n)
        char *fgets(char *buf, int n, FILE *fp)
        // 在文件结束之前遇到空格,换行符,会提前终止
        int fscanf(FILE *fp, const char format)
        
      • 写入文件

        // 写入一个字符
        int fputc(int c, FILE *fp)
        // 写入一个字符串
        int fputs(const char *s, FILE *fp)
        
    • 关闭文件

      • 写入文件的内容,只有在调用fclose(FILE *fp)后,才会被写入到磁盘文件中

      • 在关闭文件前,读取磁盘文件,无法读取文件的最新内容(写入但未保存的内容)

        int fclose( FILE *fp )
        

    示例

    • 文件的简单操作

      void fileOperation() {
          // 打开文件, 若不存在,则会目录/Users/mac/Desktop/下创建一个文件file.text,访问模式为:读写
          FILE *fwp = fopen("/Users/mac/Desktop/spring.txt", "r+");
          // 写入 “春已暖,花已开,什么时候去看海” 到文件中
          fputs("春已暖,花已开,什么时候去看海", fwp);
          // 关闭文件,此处可以调试写入的内容是何时保存到磁盘文件的
          fclose(fwp);
          // 读取文件
          FILE *frp = fopen("/Users/mac/Desktop/spring.txt", "r+");
          char buffer[255];
          fscanf(frp, "%s", buffer);
          printf("文件的内容为:
      %s
      ", buffer);
          // 关闭文件
          fclose(frp);
      }
      
  • 相关阅读:
    CodeBlocks 中fopen函数不支持命令 “r”
    【转载】分享一些Qt学习资源,欢迎下载
    【转载】知乎答案----孙志岗----Google 发布了程序员养成指南,国内互联网巨头是否也有类似的指南和课程推荐
    【转载】谷歌公司推荐的程序员必修课(英文教程)
    【转载】张逸--ThoughtWorks(中国)程序员读书雷达
    在windows环境下,为什么要用Notepad++编辑?
    【转载】池建强--趣谈个人建站
    JAVA入门第二季 第一章 类和对象
    CAP理论总结
    分布式通信方式之消息队列之RocketMQ
  • 原文地址:https://www.cnblogs.com/theDesertIslandOutOfTheWorld/p/lavenderofme.html
Copyright © 2020-2023  润新知