zoukankan      html  css  js  c++  java
  • fread,fwrite(一)

    头文件
    <stdio.h>
    函数原型
    size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
    size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);

    函数意思
    fread 从stream读取内容放到ptr指向的内存中,读取nmemb次,每次读取size大小
    fread 从ptr指向的内存中,读取nmemb次,每次读取size大小,写入到文件中

    每次查函数原型时仅仅根据函数名字无法知道哪个读取次数,哪个是每次读取大小,所以我修改一下,方便自己理解
    size_t fread(void *ptr, size_t each_time_size, size_t times, FILE *stream);
    size_t fwrite(const void *ptr, size_t each_time_size, size_t times, FILE *stream);

    顺便一提,函数不会自动加字符串结束符
    小demo

    int main(void)

    {

    char arr[10] = { 0 };

    FILE* file = fopen("a.txt", "rb");

    fread(arr, sizeof(arr), 1, file); // 这里改为sizeof(arr) - 1 可以预留结束符

    printf("%s ", arr);

    fclose(file);

    return 0;

    }

    a.txt文件内容如下
    123456789abcd
    123456
    abcde
    123456
    abcde

    结果
    123456789a

    文件保持不变

    int main(void)

    {

    char arr[30] = { 0 };

    FILE* file = fopen("a.txt", "rb");

    fread(arr, 10, 2, file); // 读取20个

    printf("%s ", arr);

    fxlose(file);

    return 0;

    }

    结果
    123456789abcd
    123456
    一共20个字符(字符d后面有个 )

    fwrite
    文件清空后

    int main(void)

    {

    char arr[10] = "abcde";

    FILE* file = fopen("a.txt", "r+");

    fwrite(arr, strlen(arr), 1, file);

    fwrite(arr, sizeof(arr) - 1, 1, file); // 会向文件写入字符串结束符

    fclose(file);

    return 0;

    }

    结果如下

    感觉文件不支持这个

  • 相关阅读:
    【2017-5-24】WebForm 条件查询
    【2017-5-24】WebForm 分页功能
    【2017-5-22】Application ViewState RepeaterCommand用法
    【2017-5-21】问题总结 Session,Cookie,登录状态保持
    【2017-5-20】传值基础 复合控件
    【2017-5-18】WebForm Repeater的使用 简单控件
    JavaScript Bind()趣味解答 包懂~~
    无题
    移动端横屏(beta)
    常用CSS居中
  • 原文地址:https://www.cnblogs.com/goodluck14/p/13191787.html
Copyright © 2011-2022 走看看