2013-10-01 2 views
0

У меня есть программа, которая должна загрузить некоторую информацию из текстового файла, а затем отобразить ее на экране. Когда я показываю информацию, я сталкиваюсь с бесконечным циклом. В моей жизни я не могу понять, почему (сделайте это для моего очень ограниченного понимания связанных списков и C, я уверен). Здесь struct:Печать связанного списка вызывает бесконечный цикл (C)?

Я видел в чужом сообщении, что ошибка могла быть вызвана в нагрузке. Я полагаю, что я столкнулся с бесконечным циклом, но, возможно, у меня возникла проблема не устанавливать последнее «следующее» в NULL или что-то в этом роде. Вот он:

void loadtimes() 
{ 
    FILE *fileName = fopen("saved_times.txt","r"); 
    char input[MAX_STR_LEN]; 
    int counter=1; 
    struct PlayerTime *p; 

    p=(struct PlayerTime*)malloc(sizeof(struct PlayerTime)); 

    ... 

    if(fileName!=NULL){ 
     while((fgets(input,MAX_STR_LEN,fileName)!=NULL)){ 
      if(counter==1){ 
       p->seconds=atoi(input); 
      } 
      if(counter==2){ 
       strcpy(p->name,input); 
       counter=0; 
       p->next=list_head; 
       list_head = p; 
      } 
      counter++; 
     } 
    } 
} 

Надеюсь, это что-то тривиальное, я сделал не так. Может ли кто-нибудь помочь?

ответ

3

Вы только выделить память для одной структуры,

p=(struct PlayerTime*)malloc(sizeof(struct PlayerTime)); 

вы должны сделать это внутри цикла while тоже, так как вы ожидаете больше список узлов, не так ли?

+0

Ах! Так просто ... Это сработало. Спасибо. Я отвечу, когда смогу. – rphello101

Смежные вопросы