回 帖 发 新 帖 刷新版面

主题:文件读取过程出现了问题

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 循环第二次时从第二个学号读入)?
 特此求助!

回复列表 (共2个回复)

沙发

“循环第一次从文件头部读入数据并存入第一个节点后,再第二次循环又从文件头部开始读取”
--!哪有这样的事。

板凳


现在了解了,文件读入都是一行一行的,改变了一下输入方式就对了

我来回复

您尚未登录,请登录后再回复。点此登录或注册