C语言中如何将文件中的数据读取到链表中

现在可以实现保存到文件了,但是读取不知道怎么读取,读取的过程是txt文件里的每行数据放入一个链表结点,下一行放入另一个结点。
struct info
{
char num[10];
char name[20];
double score[N];
double sum;
double aver;
};

typedef struct student
{
struct info handle;
struct student *next;
}STU,*LinkList;

我的保存函数是这样的
int SaveFile(const LinkList head)
{
LinkList p = head->next;
FILE *fp = NULL;

fp = fopen("student.txt","w+");
if(fp == NULL)
{
fclose(fp);
return ERROR;
}
fprintf(fp,"学号 姓名 语文 数学 外语 总分 平均分\n");
while(p)
{

fprintf(fp,"%s %6s %3.1f %3.1f %3.1f %3.1f
%3.1f\n",p->handle.num,p->handle.name,p->handle.score[0],p->handle.score[1],p->handle.score[2],
p->handle.sum,p->handle.aver);
p = p->next;
}
fclose(fp);
return OK;
}

第1个回答  2013-07-19
我刚好在做项目,学生管理系统。。。。。给你一个封装好的把
void load(PNODE head)
{
STU stu;
FILE* fp=fopen("stu.txt","rb");
assert(fp!=NULL);
while(fread(&stu,sizeof(STU),1,fp))
{
add_node(head,&stu);
}
}
PNODE create_node()
{
PNODE pnode=(PNODE)malloc(sizeof(NODE));
assert(pnode!=NULL);
return pnode;
}

void init_node(PNODE pnode,PSTU pstu)
{
pnode->stu=*pstu;
pnode->next=NULL;
}

void insert_node(PNODE head,PNODE pnode)
{
pnode->next=head->next;
head->next=pnode;
}

void add_node(PNODE head,PSTU pstu)
{
PNODE pnode=create_node();
init_node(pnode,pstu);
insert_node(head,pnode);
}
第2个回答  2013-07-19
怎么写进去的就怎么读出来,相同的格式,用fscanf把数据读出来,然后用这些数据重新生成链表就可以了追问

请问下怎么重新生成啊,我自己写了个可是读不进去数据,能帮我看下吗?

追答

跟创建链表是一样的
贴代码我看下吧

追问

太长了,不让贴,可以留个QQ吗,谢谢

追答

你留下吧我加你

追问

501984295

本回答被提问者采纳
相似回答