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

时间:2015-02-06 19:35:14

标签: c while-loop linked-list

作为作业的一部分,我正在从一个文件中读取人员名称和ID的程序,并将它们保存在单独的链接列表中。我有一个嵌套的while循环来遍历列表,直到它到达结尾,然后在结尾处分配值。不幸的是,程序在阅读时会一直崩溃,它似乎围绕着第二个while循环。

这是在main()

之前建立的结构
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();

1 个答案:

答案 0 :(得分:0)

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