相关文章推荐
霸气的书签  ·  24. Externalized ...·  1 年前    · 
魁梧的板凳  ·  ByteArrayOutputStream ...·  1 年前    · 
坚强的铁板烧  ·  python ...·  2 年前    · 

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第19天, 点击查看活动详情

大家好,我是芒果,一名非科班的在校大学生。对C/C++、数据结构、Linux及MySql、算法等领域感兴趣,喜欢将所学知识写成博客记录下来。 希望该文章对你有所帮助!如果有错误请大佬们指正!共同学习交流

作者简介:

  • CSDN C/C++领域新星创作者 blog.csdn.net/chuxinchang…
  • 掘金LV3用户 juejin.cn/user/138142…
  • 阿里云社区专家博主,星级博主,技术博主 developer.aliyun.com/profile/exp…
  • 华为云云享专家 bbs.huaweicloud.com/community/m…
  • fread - 以二进制形式读取

  • 第一个参数:用来存储读取到的数据的地址
  • 第二个参数:要被读取的每一个数据的大小(字节数)
  • 第三个参数:要读取的个数
  • 第四个参数:文件指针
  • 只不过读取是从文件流->buffer,而写入是由buffer->文件流
  • 从流里读count个大小为size的数据
  • 以二进制形式读取:rb
  • fread的返回值

    count:指定一次读几个

    如果返回值小于count,说明已经读完了,因为这一次都没有读满,下次没有数据了。如果返回值小于count,说明是最后一次读取了 所以可以根据它的返回值判断是否读取结束

    翻译:fread返回实际读取的完整项目数,如果发生错误或在达到计数之前遇到文件结尾,则该值可能小于计数。使用feof或ferror函数区分读取错误和文件结束情况。如果大小或计数为0,则fread返回0且缓冲区内容不变。
     	如果返回的值小于count,说明已经读取完了
    

    从上述fwrite写入的内容中读取数据

    struct S
       int n ;
        double d;
        char name[10];
    int main()
        struct S s = {0};
        //以二进制形式打开文件
        FILE* pf = fopen("data.txt","rb");
        if(NULL == pf)
            perror("fopen");
            return -1;
        //写文件-二进制形式写
        fread(&s,sizeof(s),1,pf);
        //打印读取的结果
        printf("%d %lf %s\n",s.n,s.d,s.name);
        //关闭文件
        fclose(pf);
        pf = NULL;
        return 0;
    

    文件读写注意事项:

  • 最开始要先打开文件,然后进行判断是否打开成功!
  • 读写结束后,要关闭文件
  • 每进行一次读写,文件指针的位置都会发生偏移
  • 如:读取一个字符之后,文件指针指向下一个字符,写入一个字符后,文件指针指向下一个位置
  • 写入/读取一行字符同理
  •