Loading... ## 数据块的读写 fread(buffer,size,count,fp); fwrite(buffer,size,count,fp); 说明: > 参数: > > buffer:指向储存数据空间的首地址的指针 > > size:一次性读写的数据块大小 > > count:要读写的数据块个数 > > fp:指向要进行写操作的文件按指针 返回值:实际读写的**数据块数**(不是总数据大小!重要) ## 使用 fwrite 将<span style="color:#FF0000">数据块</span>写入到文件中 * 我们写入定义的数组 ```C #include<stdio.h> typedef struct { char name[16];//名字 int deff;//防御 int atk;//攻击 }HERO; int main(int argc, char* argv[]) { HERO hero[] = { {"德玛西亚",80,60}, {"盲僧",90,80}, {"校法",45,84}, {"小炮",50,90} }; int n = sizeof(hero) / sizeof(hero[0]); FILE* fp = NULL; fp = fopen("hero.txt", "w"); if (fp == NULL) { perror("fopen"); return 0; } //fwrite 将内存的数据 原样的 输出到 文件中 //写入的数据 不便于 用户查看 但是 不会影响 程序读 fwrite(hero, sizeof(HERO), n, fp); fclose(fp); return 0; } ``` ![](https://blog.fivk.cn/usr/uploads/2021/02/4244369590.png) * 应为编译器识别不了,乱码了。 * fwrite 将内存的数据 原样的输出到文件中 * 写入的数据 便于用户查看,但是不会影响程序读操作 ## 使用ferad 从文件中读取<span style="color:#FF0000">数据块</span> * 刚才不能正常以文本格式打开 * 我们尝试用vs 2019读取hero.txt ```C #include<stdio.h> typedef struct { char name[16];//名字 int deff;//防御 int atk;//攻击 }HERO; int main(int argc, char* argv[]) { HERO hero[4]; int i; FILE* fp = NULL; fp = fopen("hero.txt", "r"); if (fp == NULL) { perror("fopen"); return 0; } fread(hero, sizeof(HERO), 4, fp); for (i = 0; i < 4; i++) { printf("英雄姓名:《%s》, 防御:《%d》, 伤害:《%d》\n",\ hero[i].name, hero[i].deff, hero[i].atk); } return 0; } ``` * 我们发现vs 2019是可以读的 ![](https://blog.fivk.cn/usr/uploads/2021/02/1721860190.png) --- 那么为什么会出现 在文本编辑乱码 在vs 2019可以读取这样的区别呢? 这就是马上要学的格式化文件读写、文件的随机读写。 现在我们学的是文件的顺序读写 最后修改:2021 年 02 月 21 日 © 禁止转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏