关于链表的数据录入与读取,麻烦高手帮我看一下
关于一个用链表的学生管理系统,要求从文本录入数据,我已经将数据录入,但为什么读取的时候我只能读取第一条或者最后一条数据,中间的数据读取不到?烦请高手大虾帮忙看看,谢啦!#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct class_//成绩结构体
{
char no2[10];
char no1[5];
char name1[10];
float score_;
float score[3];
struct class_*next1;
}pp;
typedef struct student//学生基本信息
{
char no[10];
char name[20];
char sex[5];
char num[5];
char tel[15];
struct student *next;
}STU;
void xinxia()//A.txt信息的录入
{
FILE *fp;
STU *p1,*h=NULL,*p2;
p1=(STU*)malloc(sizeof(STU));
h=p1;
p2=p1;
fp=fopen("A.txt","r");
if(!fp)
{
printf("文件打开失败!\n");
exit(1);
}
while(!feof(fp))//从文件中读数据直到文件尾
{
p2->next=p1;
if(!fscanf(fp,"%s %s %s %s %s",p1->no,p1->name,p1->sex,p1->num,p1->tel))
{
printf("文件读取不成功\n");
exit(1);
}
printf("%s %s %s %s %s\n",p1->no,p1->name,p1->sex,p1->num,p1->tel);
p1=(STU*)malloc(sizeof(STU));//头结点盛申请内存
}
p2->next=NULL;
p1=h;
p2=h;
while(p1!=NULL)//这里,对所输出的数据进行测试!
{
printf("%s %s %s %s %s\n",p1->no,p1->name,p1->sex,p1->num,p1->tel);
p2=p1;
p1=p2->next;
}
}
void xinxib()//B.txt信息录入
{
FILE *fp2;
pp *q1,*q2=NULL,*h1;
fp2=fopen("B.txt","r");
if(!fp2)
{
printf("文件打开失败");
exit(1);
}
q1=(pp*)malloc(sizeof(pp));
h1=q1;
q2=q1;
while(!feof(fp2))
{
q2->next1=q1;
if(!fscanf(fp2,"%s %s %s %f %f %f %f\n ",q1->no2,q1->no1,q1->name1,&q1->score_,&q1->score[0],&q1->score[1],&q1->score[2]))
{
printf("文件读取失败\n");
exit(1);
}
printf("%s %s %s %f %f %f %f\n",q1->no2,q1->no1,q1->name1,q1->score_,q1->score[0],q1->score[1],q1->score[2]);
q1=(pp*)malloc(sizeof(pp));
}
[ 本帖最后由 coki 于 2011-2-23 09:10 编辑 ]