• 二十四、C 文件读写


    一、文件操作

    1.1 文件打开

    • 函数:FILE *fopen( const char *filename, const char *mode );
      • filename:文件指针
      • mode:打开模式,如下图所示:
        在这里插入图片描述

    1.2 关闭文件

    • 函数:int fclose( FILE *fp );
      • fp:文件指针
    • 返回结果:成功关闭文件,返回0;否则返回EOF(定义在stdio.h中的一个常量)

    1.3 写入字符

    • 函数:int fputc( int c, FILE *fp );
    • 返回结果:成功写入,返回0;否则返回EOF,即-1

    1.4 写入字符串

    • 函数1:int fputs( const char *s, FILE *fp );
    • 返回结果:成功写入,返回非零值;否则返回EOF,即-1
    • 函数2:int fprintf(FILE *fp, const char *s);
    • 返回结果:成功写入,返回字符串字符个数;否则返回EOF,即-1

    1.5 读取文件

    • 函数1:int fgetc( FILE * fp );
    • 返回结果:成功返回读取的字符,否则放回EOF
    • 函数2:char *fgets( char *buf, int n, FILE *fp );
    • 返回结果:成功返回读取的字符串,否则返回EOF
      • 注意:只读取n-1个字符,并在结尾加上NULL终止字符串,无法读取\n,EOF
    • 函数3:char fscanf(FILE *fp, "%s",char *buff);
      • 无法读取空格,EOF,\n
    • 代码实现:
      #include 
      #include 
      int main()
      {
          FILE *fp = NULL;
          char buff[40];
          fp = fopen("test.txt","w+");
          int s = fprintf(fp, "xiaoma gede biji.....\n"); // 写入成功,返回字符的个数
          int s1 = fputs("string......\n",fp); // 写入成功,返回非零值
          char c = fputc('x',fp); // 写入成功返回写入的字符
          int i = fclose(fp); // 关闭成功返回0
          printf("i = %d\nc = %c\ns = %d\ns1 = %d\n",i, c, s, s1);
          fopen("test.txt","r+");
          char c_r = fgetc(fp); // 读取文件的第一个值,成功返回读取值,否则返回EOF(-1)
          /*
              fgetc和fgets会相互影响,fgetc会读取第一个字符,
              fgets只能从剩下的地方进行读取,无法读取\n,文件末尾的EOF
          */
          fgets(buff,8,fp); // 读取6-1个,最后追加一个null
          printf("c_r = %c\nbuff = %s\n",c_r, buff);
          fscanf(fp, "%s", buff); // 无法读取空格,换行符,EOF
          printf("s_fscanf:%s",buff);
          fclose(fp);
          return 0;
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
    • 运行结果:
      i = 0
      c = x
      s = 22
      s1 = 1
      c_r = x
      buff = iaoma g
      s_fscanf:ede
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
  • 相关阅读:
    数据结构:堆排序
    ARP欺骗攻击
    汽车网络安全 -- ECU会遭受黑客怎样的攻击?
    Java语言编写猜字游戏
    【DZ模板】价值288克米设计APP手机版DZ模板 数据本地化+完美使用
    Java多线程下载分析方法
    5:主页面搭建
    Elasticsearch使用篇 - 关联查询
    vsphere虚拟网络组件
    电力系统直流潮流分析【N-1】(Matlab代码实现)
  • 原文地址:https://blog.csdn.net/qq_43280851/article/details/127138147