列宁水晶棺图片:如何用fread()函数将文件中的数据读到链表中?

来源:百度文库 编辑:中科新闻网 时间:2024/05/05 10:45:43
我用fwrite()将一个链表中的数据写入文件中,写入的时候每个结构体的sizeof 是64个字节,我读出的时候链表中结构体的sizeof也是64个字节,但是出问题了,只有头几个数据对得上号,请问这是为什么?

代码如下:
//链表
struct Students
{
char Names[10];//姓名
char StuNo[10];//学号
char Class[10];//班级
double CreditHour;//学分
double CLanguage; //C语言
double CAddLanguage;//C++
double IntegradeDesign;//综合设计
};

//用来存数据
struct StuInfo //创建一个链表
{
struct Students Info;
struct StuInfo *next;
};

//用来读数据
struct QueryStuInfo
{
int number; //编号
struct Students InfoOfStu;
struct QueryStuInfo *next;
};

//写如文件
if(fwrite(&InfoLink.Info,sizeof(InfoLink.Info),1,fp) !=1)
{
printf("文件不能写入数据,可能是系统文件被破坏.请重新运行程序.");
exit(1);
}
//读取文件
p = (struct QueryStuInfo *)malloc(sizeof(struct QueryStuInfo));
p->number = i;
p -> next = NULL;//初始化
fread(&(p -> InfoOfStu),sizeof(p -> InfoOfStu),1,fp);

我只有这么多分了.

没有你的程序,我也不一定知道我的说法对不对。你读出的时候按照sizeof(node)来读,不要1个1个的大小来读。

fread(&(p -> InfoOfStu),sizeof(p -> InfoOfStu),1,fp);