失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 【C 语言】文件操作 ( 按照内存块的方式读写文件 | fread 函数 | fwrite 函数 )

【C 语言】文件操作 ( 按照内存块的方式读写文件 | fread 函数 | fwrite 函数 )

时间:2023-05-20 23:44:13

相关推荐

【C 语言】文件操作 ( 按照内存块的方式读写文件 | fread 函数 | fwrite 函数 )

文章目录

一、fwrite 函数二、fread 函数三、按照内存块的方式写文件四、按照内存块的方式读文件

一、fwrite 函数

fwrite 函数 :const void *ptr指针指向的 内存数据 , 拷贝size_t size乘以size_t nmemb字节的数据到FILE *stream指针指向的文件中 ;

#include <stdio.h>size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)

二、fread 函数

fread 函数 :FILE *restrict stream指向的文件中 , 读取size_t size乘以size_t count字节的数据到void *restrict buffer缓冲区中 , 返回成功读取的size_t count数 , 注意 不是 字节数 , 是 字节数size\cfrac{字节数}{size}size字节数​ 的值 ;

#include <stdio.h>size_t fread( void *restrict buffer, size_t size, size_t count, FILE *restrict stream );

三、按照内存块的方式写文件

代码示例 :

// 文件指针FILE *fp = NULL;// 文件路径char *filename = "D:/File/file.txt";// 数组Student students[3] = {0};// 循环控制变量int i = 0;// 初始化结构体数组数据for(i = 0; i < 3; i++){sprintf(students[i].name, "Tom %d", i + 1);students[i].age = 18 + i;}// 以 读写 方式打开 文本文件// 文件如果不存在 , 则创建文件fp = fopen(filename, "wb");// 向文件中写出结构体数组数据fwrite(students, sizeof(Student), 3, fp);// 关闭文件fclose(fp);// 如果没有关闭文件 , 则需要等待文件执行完毕后 , 才能将内存缓存写出磁盘文件中// 命令行不要退出system("pause");return 0;

执行结果 :每个结构体 242424 字节 , 写出了 333 个结构体 , 最终文件大小 727272 字节 ;

数据内容 :

二进制查看 :

四、按照内存块的方式读文件

代码示例 :

#include <stdio.h>#include <stdlib.h>#include <string.h>// 该结构体每个 24 字节typedef struct Student{char name[20];int age ;}Student;/*** @brief 主函数入口* @return*/int main(int argc, char* argv[], char**env){// 文件指针FILE *fp = NULL;// 文件路径char *filename = "D:/File/file.txt";// 数组Student students[3];// 循环控制变量int i = 0;// 以 读写 方式打开 文本文件// 文件如果不存在 , 则创建文件fp = fopen(filename, "r+b");// 向文件中写出结构体数组数据fread(students, sizeof(Student), 3, fp);// 打印结构体数组数据for(i = 0; i < 3; i++){//fread(&students[i], sizeof(Student), 1, fp);printf("%d . name = %s , age = %d\n", i, students[i].name, students[i].age);}// 关闭文件fclose(fp);// 如果没有关闭文件 , 则需要等待文件执行完毕后 , 才能将内存缓存写出磁盘文件中// 命令行不要退出system("pause");return 0;}

执行结果 :

如果觉得《【C 语言】文件操作 ( 按照内存块的方式读写文件 | fread 函数 | fwrite 函数 )》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。