在我的链表代码中找不到错误

标签 c linked-list

该函数应该从文件中加载一些个人信息并将其放入链表中,然后返回一个指向链表第一个元素的指针。使用的结构如代码中所示,每个用户的全名和 ID(索引)

    typedef struct Serveur
     {
      char ID[6];
      char nom[CMAX];
      char prenom[CMAX];
      struct Serveur *nxt;
     }Serveur;

Serveur *creer_liste()
  {
      return NULL;
  }

Serveur* add_server(Serveur *tete,char ID[6],char nom[CMAX],char prenom[CMAX])
  {
     Serveur* T=malloc(sizeof(Serveur));
     T->ID=ID;
     T->nom=nom;
     T->prenom=prenom;
     T->nxt=tete;
     tete=T;
     return tete;
  }

Serveur *load_servers()  //load servers list from the daba base and organise them
  {
      int c=0; char ID[6],nom[CMAX],prenom[CMAX];
      Serveur *tete;
      FILE *fichier=NULL;
      fichier=fopen("base/serveurs_liste.txt","w");
      if(fichier==NULL)
        return NULL;
      else
       {
         rewind(fichier);
         c=fgetc(fichier);
         if(c==EOF)
            return NULL;
         else
          {
            rewind(fichier);
            while(!feof(fichier))
              {
                do{c=fgetc(fichier);}
                while(c!='\n');
                fscanf(fichier,"%s %s %s",ID,nom,prenom);
                tete=add_server(tete,ID,nom,prenom)
              }
          }
        }
      return tete;
  }

但是我面临这个错误,在我看来,一切都是逻辑的,我真的找不到那里出了什么问题,所以如果有人能弄清楚那里出了什么问题,请帮忙

最佳答案

您从 add_server 返回了错误的值。您应该返回新分配的 T:

Serveur* add_server(Serveur *tete,char ID[6],char nom[CMAX],char prenom[CMAX])
  {
     Serveur* T=malloc(sizeof(Serveur));
     T->ID=ID;
     T->nom=nom;
     T->prenom=prenom;
     T->nxt=tete;
     return T;
  }

关于在我的链表代码中找不到错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28179928/

相关文章:

c - STM32Cube - 项目未构建(所选处理器不支持 Thumb 模式)

c - 如何避免枚举值的冲突?

java - 使用树集中的元素初始化链表

c - C中链表中的'addFirst'方法

java - 如何在Java中包含字符串值和整数键的映射中搜索部分 "value"?

c - 如何使用 C 程序和 malloc 找出处理器的页面大小?

c - PThread基本程序,好奇这段代码有什么问题

python - 如何解决Python-C-API错误 "This is an issue with the package mentioned above, not pip."?

c - 检测c中的字符

c链表绘制结构到屏幕