按块方式读写文件
文件 方式 读写
2023-09-14 09:13:38 时间
按块写入文件的方式,文件中用记事本打开均为乱码
fwrite函数----向文件中按块写入数据
fread函数------向文件中按块读取数据
如果向文件中写入的是自定义结构体信息,那么打开记事本是乱码,不代表写入不正确
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct {
char name[32];
int age;
}stu;
//按块写入文件
void test()
{
FILE* fp = fopen("per.txt", "w");
if (fp == NULL)
{
printf("文件打开失败");
return;
}
stu s[3] = { {"孙悟空",100}, {"猪八戒",60},{"沙僧",40} };
//向文件中写入数据
//第一种写法:
int len = sizeof(s) / sizeof(stu);
for (int i = 0; i < len; i++)
{
fwrite(&s[i], sizeof(stu), 1, fp);
}
fclose(fp);
}
//按块读取文件
void test01()
{
FILE* fp = fopen("per.txt", "r");
if (fp == NULL)
{
printf("文件打开失败");
return;
}
stu per[3];
int len = sizeof(per) / sizeof(stu);
//从文件中读取数据
//第一种写法:
for (int i = 0; i < len; i++)
{
fread(&per[i], sizeof(stu), 1, fp);
}
//打印结构体
for (int i = 0; i < len; i++)
{
printf("%s\t%d\n", per[i].name, per[i].age);
}
}
int main()
{
test01();
return 0;
}
第二种写法:
参数1:数据的地址 参数二:块大小 参数 3:块个数 参数4:文件指针
结构体数组存储时连续地址存储,所以可以填数组首地址
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct {
char name[32];
int age;
}stu;
//按块写入文件
void test()
{
FILE* fp = fopen("per.txt", "w");
if (fp == NULL)
{
printf("文件打开失败");
return;
}
stu s[3] = { {"孙悟空",100}, {"猪八戒",60},{"沙僧",40} };
//向文件中写入数据
//第二种写法:
int len = sizeof(s) / sizeof(stu);
fwrite(s, sizeof(stu), 3, fp);
fclose(fp);
}
//按块读取文件
void test01()
{
FILE* fp = fopen("per.txt", "r");
if (fp == NULL)
{
printf("文件打开失败");
return;
}
stu per[3];
int len = sizeof(per) / sizeof(stu);
//从文件中读取数据
fread(per, sizeof(stu), 3, fp);
//打印结构体
for (int i = 0; i < len; i++)
{
printf("%s\t%d\n", per[i].name, per[i].age);
}
}
int main()
{
test01();
return 0;
}
相关文章
- MongoDB管理: 如何让mongod产生core文件?
- juniper设备如何导出log文件(分享一个juniper的文件导出方式)
- Android_(控件)使用ListView显示Android系统SD卡的文件列表_02
- 【转】DLL中导出函数的两种方式(dllexport与.def文件)
- 【Java】如何获取文件的创建时间、更新时间
- java中三种方式获得类的字节码文件对象
- 多线程取读文件(别人的,有点晕,先放在这里有时间研究研究)
- nginx vhosts rewrite 独立文件的方式出现
- c++文件操作1之文本文件的写入操作
- ABAP 报表中如何以二进制方式上传本地文件试读版
- Atitit poi读取大文件内存溢出的解决 目录 1. poi提供了两种读取excel的方式,一种是类似xml的Dom,1 2. POI官网上提到XSSF有三种读写excel,POI地址1 3
- WEB漏洞攻防 - 文件上传漏洞总结
- 【Kotlin 协程】Flow 异步流 ② ( 使用 Flow 异步流持续获取不同返回值 | Flow 异步流获取返回值方式与其它方式对比 | 在 Android 中使用 Flow 异步流下载文件 )
- 【Android Gradle 插件】Gradle 自定义 Plugin 插件 ⑦ ( 自定义 Gradle 插件导入方式 | buildSrc 插件导入 | 构建脚本中自定义插件 | 独立文件 )
- 查看磁盘和文件的使用情况df和du
- 219:vue+openlayers 加载gif文件,采用CSS设置gif背景的方式
- 164:vue+openlayers在3857坐标系项目下导出KML文件
- Selenium上传文件有多少种方式?不信你有我全....
- 反弹shell的实现方式和检测方法——常规攻击可以直接检测,pipe方式需要结合关联分析(图关联最好),如果含有混淆脚本,需要无文件攻击检测
- 按格式化方式读取文件------fscanf函数
- Gradle 任务访问文件的几种方式
- [ MySQL ] 使用 MySQL Workbentch 进行MySQL数据库备份 / 还原(Part 3:备份.sql文件方式)
- [ MySQL ] 使用Navicat进行MySQL数据库备份 / 还原(Part 2:备份.sql文件方式)