C语言中,将多个结构体数据写到一个文件中,应该如何读取?

本人思路:将结构体3个结构体用typedef将3个结构体分别定义成3个类型login_node,p2log_innode;basic_info_node,p2baisc_... 本人思路:
将结构体3个结构体用typedef将3个结构体分别定义成3个类型
login_node, p2log_innode;
basic_info_node, p2baisc_info_node;
score_info_node, p2score_info_node;
写入到一个文件中,用3个fwrite分别写入。
因为写入的文件的是二进制数,所以只能用fread读取。
但是读取时用3个fread,结构体之间会有干扰吧?

我现在想,是不是我的思路错了。
我是不是可以考虑将3个结构体合并到一个结构体中?
还是将3个结构体分别写入到3个文件中?

本人最希望的还是将3个结构体写入到一个文件中,然后分别读出,但是想到应该会有干扰,现在没有思路了!

可以不可以用一个fwrite同时将3个结构体同时写入到文件中?然后再用一个fread再读出来?如果可以,麻烦举个例子,或者写的格式。

如果我用fprintf是不是就可以解决这一问题?
在用fprintf的基础上,然后用frscanf读出?

本人QQ724835496,C菜鸟,希望有大神靠山,以后可以求教。
实在抱歉,三个结构体类型定义有误,应该是
login_node, *p2log_innode;
basic_info_node, *p2baisc_info_node;
score_info_node, *p2score_info_node;
本人是用链表将各个循环信息赋值,然后写入到文件中,所以各个结构体中是有*nextp来存放下一个结构体变量的地址的。
展开
 我来答
tattackor
推荐于2017-10-07 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:892万
展开全部

C语言把一个结构体数组写入文件分三步:
1、以二进制写方式(wb)打开文件
2、调用写入函数fwrite()将结构体数据写入文件
3、关闭文件指针

相应的,读文件也要与之匹配:
1、以二进制读方式(rb)打开文件
2、调用读文件函数fread()读取文件中的数据到结构体变量
3、关闭文件指针

参考代码如下:

#include<stdio.h>
struct stu {
    char name[30];
    int age;
    double score;
};
int read_file();
int write_file();
int main()
{
    if ( write_file() < 0 ) //将结构体数据写入文件
        return -1;
    read_file(); //读文件,并显示数据
    return 0;
}
int write_file()
{
    FILE *fp=NULL;
    struct stu student={"zhang san", 18, 99.5};
    fp=fopen( "stu.dat", "wb" ); //b表示以二进制方式打开文件
    if( fp == NULL ) //打开文件失败,返回错误信息
    {
        printf("open file for write error\n");
        return -1;
    }
    fwrite( &student, sizeof(struct stu), 1, fp ); //向文件中写入数据
    fclose(fp);//关闭文件
    return 0;
}
int read_file()
{
    FILE *fp=NULL;
    struct stu student;
    fp=fopen( "stu.dat", "rb" );//b表示以二进制方式打开文件
    if( fp == NULL ) //打开文件失败,返回错误信息
    {
        printf("open file for read error\n");
        return -1;
    }
    fread( &student, sizeof(struct stu), 1, fp ); //读文件中数据到结构体
    printf("name=\"%s\" age=%d score=%.2lf\n", student.name, student.age, student.score ); //显示结构体中的数据
    fclose(fp);//关闭文件
    return 0;
}
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
lx_wp
推荐于2017-09-27 · 超过14用户采纳过TA的回答
知道答主
回答量:26
采纳率:0%
帮助的人:31.9万
展开全部
1。如果你知道存入文件的第一个结构是什么类型的,此种就非常方便了,自己根据 从文件读出的第一个结构里面的下个结构指针 来读文件中下个结构。
2。如果你不知道存入文件的第一个结构式啥类型,但又想分三个结构来存取,那你只能在每个结构里面加上一个变量来区分是什么结构,这样在读文件之前先读出这个变量,根据其值来判断结构类型
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
leiyangbdwk
2012-04-08 · TA获得超过3295个赞
知道大有可为答主
回答量:4975
采纳率:12%
帮助的人:4394万
展开全部
不太方便,如果用vb.net的xml不容易出错,
你存结构体到文本,需要精确地定位,非常麻烦啊。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式