C 使用链接列表时循环失败

C 使用链接列表时循环失败,c,while-loop,linked-list,C,While Loop,Linked List,作为作业的一部分,我让一个程序从文件中读取人员的姓名和id,并将其保存在单独的链接列表中。我有一个嵌套的while循环来遍历列表,直到它到达末尾,然后在末尾赋值。不幸的是,程序在读取时不断崩溃,并且似乎围绕着第二个while循环旋转 这是在主程序之前建立的结构 struct node { char name[50]; int id; struct node *next; }*start; 以下是函数本身: void read() { int tempNum = 0

作为作业的一部分,我让一个程序从文件中读取人员的姓名和id,并将其保存在单独的链接列表中。我有一个嵌套的while循环来遍历列表,直到它到达末尾,然后在末尾赋值。不幸的是,程序在读取时不断崩溃,并且似乎围绕着第二个while循环旋转

这是在主程序之前建立的结构

struct node
{
    char name[50];
    int id;
    struct node *next;
}*start;
以下是函数本身:

void read()
{
   int tempNum = 0, id, jack = 0;
   char name[50];

   struct node *temp, *right;
   temp = start;

   FILE *ifp = fopen("AssignmentOneInput.txt", "r");
   while(fscanf(ifp," %s", &name) != EOF)
   {

       fscanf(ifp, " %[^,]s, %[^/n]d", &name, &id);

       temp = (struct node *)malloc(sizeof(struct node));

       strcpy(temp->name,name);
       temp->id = id;

       right = (struct node *)start;

       printf("test number one\n");
       while(right->next != NULL)
       {
            printf("test number two\n");
            right = right->next;
       }
        printf("test number three\n");


       right->next = temp;
       right = temp;

       right->next = NULL;

   }

}
至于它在main函数中的实现,它是第一个被调用的函数,所以看起来有点像:

main()
{
  read();

我猜START是一个全局变量?然后它将由编译器和C运行时系统初始化为零。这意味着它将作为指针初始化为NULL。因此,当您在代码中未初始化地使用它时,它将为NULL,并且当您取消引用指针时,它将为NULL。而未定义的行为可以说是导致崩溃的最常见原因。

请给我们一个完整的程序,其中包含main。告诉我们它崩溃的确切位置以及确切的消息。节点的定义是什么?您是否初始化过节点的旁边的NULL?另外,如果start为NULL会发生什么?或者如果它没有初始化?或者指向未分配的内存?您的程序中有太多未知项,请创建一个并向我们展示。以及崩溃发生时的堆栈回溯。