打印链表导致无限循环(C)?

时间:2013-10-01 03:12:58

标签: c loops linked-list

我有一个程序应该从文本文件中加载一些信息,然后将其显示在屏幕上。当我显示信息时,我遇到了无限循环。对于我的生活,我无法弄清楚为什么(对我对链表的非常有限的理解和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++;
        }
    }
}

希望这是一件微不足道的事我做错了。任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:3)

您只为一个结构分配内存,

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

你应该在while循环内执行此操作,因为你期望更多的列表节点,对吗?