【问题标题】:Printing linked list causes infinite loop (C)?打印链表导致无限循环(C)?
【发布时间】:2013-10-07 02:08:34
【问题描述】:

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

希望这是我做错的微不足道的事情。有人可以帮忙吗?

【问题讨论】:

    标签: c loops linked-list


    【解决方案1】:

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

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

    您也应该在while 循环中执行此操作,因为您期望更多的列表节点,是吗?

    【讨论】:

    • 啊!如此简单……它奏效了。谢谢你。我会尽可能接受答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-25
    • 2018-06-17
    相关资源
    最近更新 更多