海面飞行 2021-04-24 15:06 采纳率: 0%
浏览 77

单向链表+结构体+标准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班

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

  • 写回答

4条回答 默认 最新

  • 关注

    参考:

    /* 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);
    }

    评论

报告相同问题?