我正在创建一个结构类型的链表队列。问题是当我排队一个对象并打印链接列表时,它显示得很好。排队另一个项目,然后打印让我乱码。我使用了 GDB,发现变量变成了一堆乱码,我预计这是由于未定义的行为,但我无法弄清楚我需要做什么来解决这个问题。
这是用户定义变量的地方
printf("First name of employee?\n");
char firstName[MAX_LENGTH];
scanf(" %s", &firstName);
printf("Last name?\n");
char lastName[MAX_LENGTH];
scanf(" %s", &lastName);
if(head->next == NULL) //if there is currently no employee in the list
head->next = hireEmployee(head, lastName, firstName, employeeCount);
else
{
Employee *tmp;
head->next = tmp;
while(tmp->next != NULL)
{
tmp = tmp->next;
}
hireEmployee(tmp, lastName, firstName, employeeCount);
}
这是 enQueue 操作的一部分。
Employee *new = malloc(sizeof(Employee));
strcpy(new->lastName, lastName);
strcpy(new->firstName, firstName);
最后是我的打印方法。
Employee *tmp;
tmp = head->next;
if(head->next == NULL)
printf("Nothing in this list.");
else
{
printf("%s, %s\nEmployee Number: %i\n", tmp->lastName, tmp->firstName, tmp->employeeNumber);
while(tmp->next != NULL)
{
printf("%s, %s\nEmployee Number: %i\n", tmp->lastName, tmp->firstName, tmp->employeeNumber);
tmp = tmp->next;
}
}
我需要做什么来解决这个问题?我知道未定义的行为可能发生在哪里,但不知道我应该做什么。