主题:文件读取过程出现了问题
typedef struct student_info{
char name[20];
int score;
long number;
struct student_info *next;
}INFO;
INFO *fcreat(FILE *fp) /*从文件中读取并创建链表*/
{
INFO *head=NULL,*p1=NULL,*p2=NULL;
long number;
int score;
char name[20];
int n=0;
do{
fscanf(fp,"%ld%s%d",&number,name,&score);/*此处为问题所在*/
if(number==NULL)break;
n++;
p1=(INFO *)malloc(sizeof(INFO));
p1->number=number,p1->score=score,strcpy(p1->name,name),p1->next=NULL;
if(n==1)
head=p2=p1;
else{
p2->next=p1;
p2=p1;
}
}while(1);
return head;
}
int main()
{
...../*程序段省略*/
if((fp=fopen("stu_info.txt","r+"))==NULL){
puts("Can't open file.\n");
return 0;
}
head=fcreat(fp);
...../*程序段省略*/
}
stu_info.txt 内容为(例):11124564 ljd 88 11124589 lxj 87 11124567 jt 84
在fcreat函数中,循环第一次从文件头部读入数据并存入第一个节点后,再第二次循环又从文件头部开始读取,怎样处理才能使读取文件从之后的位置开始(例如在do-while 循环第二次时从第二个学号读入)?
特此求助!
char name[20];
int score;
long number;
struct student_info *next;
}INFO;
INFO *fcreat(FILE *fp) /*从文件中读取并创建链表*/
{
INFO *head=NULL,*p1=NULL,*p2=NULL;
long number;
int score;
char name[20];
int n=0;
do{
fscanf(fp,"%ld%s%d",&number,name,&score);/*此处为问题所在*/
if(number==NULL)break;
n++;
p1=(INFO *)malloc(sizeof(INFO));
p1->number=number,p1->score=score,strcpy(p1->name,name),p1->next=NULL;
if(n==1)
head=p2=p1;
else{
p2->next=p1;
p2=p1;
}
}while(1);
return head;
}
int main()
{
...../*程序段省略*/
if((fp=fopen("stu_info.txt","r+"))==NULL){
puts("Can't open file.\n");
return 0;
}
head=fcreat(fp);
...../*程序段省略*/
}
stu_info.txt 内容为(例):11124564 ljd 88 11124589 lxj 87 11124567 jt 84
在fcreat函数中,循环第一次从文件头部读入数据并存入第一个节点后,再第二次循环又从文件头部开始读取,怎样处理才能使读取文件从之后的位置开始(例如在do-while 循环第二次时从第二个学号读入)?
特此求助!