单向链表+结构体+标准IO的fscanf读取一个txt文件内多行数据的问题?

问题:构建了一个结构体student,希望能从.txt文件中读取出多行数据保存在 结构体指针 内,使用fscanf实现。思路如下:请各位高手,指点一下错误的地方

typedef struct student{
    char name[20];         //姓名
    int age;               //年龄
    char class;            //班级
    struct student *next;    //单向的链表
}stu_t,*pstu_t;


  1. 我声明了一个结构体指针,现在.txt文本以及有了5行数据
  2. 系统通过将数据读取到一个指针,然后继续下个指针,不停地保存的方式来接收数据
pstu_t stu;
初始化

读取数据的代码
FILE *fp=fopen("stu.txt","r");
if(fp==NULL){
    perror("读取文件失败");
    exit(1);
}
while(stu!=NULL){
    if((fscanf(fp,"%s%d%s",stu->name,&stu->age,stu->class))){    
    //只要不是文件末尾EOF就打印测试一下
        printf("%s\t%d\t%s",stu->name,stu->age,stu->class);
    }
    stu = stu->next;
}

在ubuntu下操作的,不知道是哪部分出了问题。

文本文件  stu.txt


bek 23 三年二班
sdk 23 四年八班
sa 23 五年1班
d 21 六年3班
ds 23 一年1班

这方面的知识不够牢固,希望大神们稍微讲解一下,指点一下错误。感谢感谢

参考:

/* Note:Your choice is C IDE */
#include "stdio.h"

struct SNAKE
{
    int direction;
    int life;
    int node;
    int level;
    int score;
}snake;
struct FOOD{
    int x;
    int y;
    int yes;    
}food;
void main()
{
  FILE *fp;
  snake.direction=1;
  snake.life=1;
  snake.node=3;
  snake.level=1;
  snake.score=0;
  
  food.x=100;
  food.y=200;
  food.yes=1;
  fp = fopen("d:\\snake.dat","wb+");
  if(fp==NULL){
      printf("can not open file.\n");
      exit(0);
  }
  fwrite(&snake,sizeof(struct SNAKE),1,fp);
  fwrite(&food,sizeof(struct FOOD),1,fp);
  fclose(fp);
}

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y

C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html