Я создаю Связанный список Очередь типа структуры. Проблема заключается в том, когда я объявляю объект и печатаю связанный список, который он отображает. Записывание другого предмета, и печать THEN дает мне изящество. Я использовал GDB и обнаружил, что переменные меняются на кучу искажений, и я ожидаю, что это связано с неопределенным поведением, но мне трудно понять, что мне нужно сделать, чтобы исправить эту проблему.Переменные получают после первого вызова - неопределенное поведение в C?
Вот где переменные определяются пользователем
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);
}
Вот часть операции Епдиеие.
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;
}
}
Что мне нужно сделать, чтобы исправить это? У меня есть идеи о том, где может возникнуть неопределенное поведение, но не знаю, что я должен делать вместо этого.