gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 17:21:09 27 4
gpt4 key购买 nike

作为作业的一部分,我让一个程序从文件中读取人员的姓名和 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()
{
read();

最佳答案

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

关于c - 使用链接列表时 While 循环失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28373411/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com