Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 向链表中添加数据的函数有时会进入无限循环_C_C89_Ansi C - Fatal编程技术网

C 向链表中添加数据的函数有时会进入无限循环

C 向链表中添加数据的函数有时会进入无限循环,c,c89,ansi-c,C,C89,Ansi C,首先,这是我的代码,这是我的链表 typedef struct data { struct data *next; int value : 24; }dataTable; 这是我的职责: void addData (int data){ dataTable *dataPointer = NULL; if (dataTableHead == NULL){ /**create the hea

首先,这是我的代码,这是我的链表

        typedef struct data
    {
    
        struct data *next;
        int value : 24;
    
    }dataTable;
这是我的职责:

    void addData (int data){
    dataTable *dataPointer = NULL;
    if (dataTableHead == NULL){ /**create the head of the list if it doesn't exist*/
    
    dataTableHead = (dataTable *)malloc(sizeof(dataTable));
    dataPointer = dataTableHead;
    
    }

    else{/**if a data table exist (head exists)*/
        
        dataPointer = dataTableHead;
        
        while (dataPointer->next != NULL){/**gets the last link of the list*/
            dataPointer = dataPointer->next; 
        }

        dataPointer->next = (dataTable *)malloc(sizeof(dataTable));/**add a new symbol to the list*/
        dataPointer = dataPointer->next;
    }
    dataPointer->value = data;

}
所以我在其他的.c文件中,加载文本文件的函数,我读取它们的行,每当我看到一些特定的东西,我就把它放在链表中

无论我对1个文件做了什么(或者至少对我尝试的内容),它都能完美地工作,但是每当我尝试2个特定文件时,第2个文件在else语句中的同时在这个函数中得到一个无限循环

我知道我没有发送我所有的代码,但我的问题只是重新获得这个函数,因为我花了很长时间试图弄清楚它,我不明白它怎么会产生无限循环。因为,datapointer将始终是列表的头,这是我用来在链表中存储数据的唯一函数,就我所见,它不会创建任何无限循环的指针。 我做错了什么会导致这个函数无限循环


是的,我使用通过
malloc
分配的缓冲区值确认了100%的循环来自addData函数,未初始化调用了未定义的行为。 您应该初始化
dataPointer->next

    }
    dataPointer->next = NULL; /* add this line */
    dataPointer->value = data;

}
注: