C 使用链接列表时循环失败
作为作业的一部分,我让一个程序从文件中读取人员的姓名和id,并将其保存在单独的链接列表中。我有一个嵌套的while循环来遍历列表,直到它到达末尾,然后在末尾赋值。不幸的是,程序在读取时不断崩溃,并且似乎围绕着第二个while循环旋转 这是在主程序之前建立的结构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
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会发生什么?或者如果它没有初始化?或者指向未分配的内存?您的程序中有太多未知项,请创建一个并向我们展示。以及崩溃发生时的堆栈回溯。