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;

    }

    结果如下

    感觉文件不支持这个

  • 相关阅读:
    angularJS 作用域
    html5的一些表单属性。
    UIScrollView 原理详解
    远程实时调试手机上的Web页面
    Web移动应用调试工具——Weinre
    WebView注入Java对象注意事项
    Android中Webview使用自定义的javascript进行回调
    [Android] Web Console: Uncaught TypeError: Object [object Object] has no method 'xxx'
    android 中 webview 怎么用 localStorage?
    iPhone 6 屏幕揭秘
  • 原文地址:https://www.cnblogs.com/goodluck14/p/13191787.html
Copyright © 2011-2022 走看看