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

本回答被提问者采纳

c语言如何从文件读入,并存放在链表中
return head; } \/\/然后开始读取文件,放到new的buf中 if(fread(new->buf,BUFSIZE,1,fp)<1){ \/\/如果读取失败,提示,并返回head printf("read file failure");return head; } fclose(fp);\/\/文件读取完后,进行链表操作 if(!head)\/\/如果传进来的head是个空指针,那么新指针就作为头节点返回 {...

c语言如何将文件中的数据读出来并存到链表中
文件I\/O通过fgets来读入整行(也就是一个struct的数据)然后借助sscanf或者strtok来分离数据并分别存入结构体 链表本身操作不困难吧,先有一个链表头,然后通过malloc创建新的项 如果是一次性连续读入数据(比如数据库的初始化),用一个while循环来控制就好 ...

C语言怎么从文件中将信息导入链表中
1,建立一个链表,链表的节点struct定义为联系人信息的格式;2,读取文件,把内容存入链表;3,查询就根据姓名关键字遍历链表就行了;4,把内容存入文件;首先建立链表,以及插入节点,查询链表函数写出来;文件的读取和存入到不是很麻烦;---下面是简单的实现,可以输入,存入文件,从文件读取,打印,如...

C语言,calloc用法,用他实现把结构体数组的数据拷贝到链表,不能用mallloc...
原型:void *calloc(unsigned n,unsigned size);我写了个简单的插入链表,你参考吧 include <stdio.h>#include <stdlib.h>typedef struct student_list{ char name[6]; struct student_list *next;}SL;void insertSL(SL *slHead);\/\/添加结构数据到链表 参数:头节点指针int main(void){...

编写c语言程序,从文件中读取数据顺序存储到单链表l中,文件中数据之间用...
在c语言中,创建单链表需要使用到malloc函数动态申请内存;文件的读写需要首先使用fopen函数打开文件,然后使用fscanf,fgetc, fgets,fprintf,fputc,fputs等函数读写函数,最后读写完毕要使用fclose函数关闭函数。下面的源程序展示了关于单链表如何从文件中读取数据和往文件里存入数据。include<stdio.h> inclu...

用C语言将文本文件中的数据(一个个结构体类型的数据)读到链表中去,代码...
include <stdio.h>#include <io.h>#include <conio.h>#include <stdlib.h>#include <string.h>#define MAX 200struct student{char no[10]; \/\/ 学号char name[50]; \/\/ 姓名float score[3]; \/\/ 分数float math;float eng;float phy;};struct data{int count; \/\/ 当前学生数组中...

怎么用C++从一个txt里面读取数据然后存放到链表中进行各种操作 最后...
pf);if(tail != tmp)free(tmp);\/ head为链表头,可以执行数据操作 \/ if(NULL == (pf = fopen(desname ,"w+"))) return 0;tail = head;while(tail){ fprintf(pf, "%s %c %s\\n", tail->name, tail->sex, tail->birth);tail = tail->next;} fclose(pf);return 0;} ...

c语言从文件中读入多行数据(每行数据有几种)到链表中
fscanf语句中,字符串name、major、phone_no、e_mail,前面多了&,读入有误。

c语言从文件中读入多行数据(每行数据有几种)到链表中
当把链表已经确定的时候,就可以依次存入文件。和平时链表的遍历一样,每读取一个节点内容就进行一次存入

如何用C语言将文本文件逐行读入数据结构的链表中
CFile类的readstring可以逐行读取。

相似回答