社区
C语言
帖子详情
fread读取结构体
wzuxian2012
2012-06-23 09:30:46
size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );
这个函数, 的 第第2个参数是大小, 第三个是个数
1. 读取后一个结构后,如何解析????
struct MyStruct
{
int a;
char c;
};
如何解析???
2. 一个结构体存一行,会有换行,怎么处理
...全文
321
7
打赏
收藏
fread读取结构体
size_t fread ( void * ptr, size_t size, size_t count, FILE * stream ); 这个函数, 的 第第2个参数是大小, 第三个是个数 1. 读取后一个结构后,如何解析???? struct MyStruct { int a; char c; }; 如何解析??? 2. 一个结构体存一行,会有换行,怎么处理
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
赵4老师
2012-06-25
打赏
举报
回复
推荐使用WinHex软件查看文件或内存中的原始字节内容。
不要把
fopen("...","...");fscanf,fprintf,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待
和
fopen("...","...b");fread,fwrite,fclose //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待
弄混了
qq120848369
2012-06-25
打赏
举报
回复
[Quote=引用 3 楼 的回复:]
1. 为什么不处理换行
2. fread与二级制有什么关系,难道其他方式打开不行吗??
还是说,不一定非要是二进制
[/Quote]
在WINDOWS平台, 请严格区分文件格式是二进制文件还是文本文件。
pathuang68
2012-06-23
打赏
举报
回复
参考:
把结构用二进制方式写入文件,并读出来
wzuxian2012
2012-06-23
打赏
举报
回复
有人回答3楼的问题吗
wzuxian2012
2012-06-23
打赏
举报
回复
1. 为什么不处理换行
2. fread与二级制有什么关系,难道其他方式打开不行吗??
还是说,不一定非要是二进制
qq120848369
2012-06-23
打赏
举报
回复
malloc一块内存, 然后fread进去一个结构体, 就可以用了.
quwei197874
2012-06-23
打赏
举报
回复
#include <stdio.h>
#define SIZE 2
struct student_type
{
char name[10];
int num;
int age;
char addr[10];
}stud[SIZE];
void save()
{
FILE *fp;
int i;
if((fp=fopen("stu_list","wb"))==NULL)
{
printf("cant open the file");
exit(0);
}
for(i=0;i<SIZE;i++)
{
if(fwrite(&stud[i],sizeof(struct student_type),1,fp)!=1)
printf("file write error\n");
}
fclose(fp);
}
main()
{
int i;
for(i=0;i<SIZE;i++)
{
scanf("%s%d%d%s",&stud[i].name,&stud[i].num,&stud[i].age,&stud[i].addr);
save();
}
for(i=0;i<SIZE;i++)
{
printf("%s,%d,%d",stud[i].name,stud[i].num,stud[i].age,stud[i].addr);
}
}
fread.c
#include <stdio.h>
#define SIZE 2
struct student_type
{
char name[10];
int num;
int age;
char addr[10];
}stud[SIZE];
void read()
{
FILE *fp;
int i;
if((fp=fopen("stu_list","rb"))==NULL)
{
printf("cant open the file");
exit(0);
}
for(i=0;i<SIZE;i++)
{
if(fread(&stud[i],sizeof(struct student_type),1,fp)!=1)
printf("file write error\n");
}
fclose(fp);
}
main()
{
int i;
read();
for(i=0;i<SIZE;i++)
{
printf("%s,%d,%d,%s",stud[i].name,stud[i].num,stud[i].age,stud[i].addr);
printf("\n");
}
}
C语言——
结构体
的
读取
与写入.zip
C语言——
结构体
的
读取
与写入.zip
将
结构体
写入二进制文件
将
结构体
数据写入二进制文件,从二进制文件中
读取
结构体
数据
如何将
结构体
数据写入到二进制文件
资源下载链接为: https://pan.quark.cn/s/67c535f75d4c 在编程中,经常需要将内存中的数据保存到文件中以便后续使用或传输。对于
结构体
(Struct)这类复杂数据类型,通常会以二进制格式存储,因为二进制文件占用空间小且读写速度快。本文将详细介绍如何在 C/C++ 等编程语言中实现“将
结构体
写入二进制文件”以及“从二进制文件中
读取
结构体
数据”。
结构体
是一种由多个不同类型的成员组成的复合数据类型,可以包含整型、浮点型、字符型等基本类型。在二进制文件中,
结构体
会按照其在内存中的布局顺序,逐个将每个成员的字节序列写入文件,从而保持
结构体
数据的完整性。 fopen():用于打开文件,创建或访问文件。需要指定文件名和访问模式,例如“wb”表示以二进制模式写入文件。 fwrite():用于将数据写入文件。它接受一个指针、要写入的元素个数、元素大小和文件指针作为参数。
fread
():用于从文件中
读取
数据,与fwrite()类似,但用于
读取
操作。 fclose():用于关闭文件,释放系统资源。 以下是一个示例代码,展示如何将一个包含整型和字符串的
结构体
写入二进制文件: 从二进制文件中
读取
结构体
时,必须确保
读取
的数据量与写入时一致,否则可能会导致数据损坏。以下是如何从二进制文件
读取
结构体
的示例: 文件操作时需要处理异常情况,例如文件打开失败、写入或
读取
错误等。 在跨平台操作时,需要注意不同操作系统对二进制文件的字节序(大端或小端)处理可能存在差异。
结构体
中的成员可能会有填充字节,以确保对齐。因此,从二进制文件中
读取
的
结构体
可能与原始
结构体
不完全匹配。为了避免这种情况,可以使用__attribute__((packed))(在 GCC 等编译器中)来去除填充。 通过使用标准 I/O 库中的函数,我们可以方便地将
结构体
数据写入二进制文件,并在需要时
读取
。这种方法
file_to_struct.rar_
结构体
用c语言写的将
结构体
写入文件,在从文件中读出
linux C语言 使用
结构体
对文件操作 读 写 查找
liunx下面的对文件的操作,使用了
结构体
的操作,代码均调试成功,在必要的地方还加上注释了,欢迎大家下载,如果有什么问题,欢迎提出,我们大家一起进步哦。
C语言
70,034
社区成员
243,244
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章