Я увидел что-то не так в коде:
Когда я прочитал весь код, я увидел ту же ошибку со всеми Do - При замене AND на OR, тогда вы должны положить strcpy из scanf, как пример кода .
do{
printf("Type of coffee [ yes/no ]: ");
scanf(" %[^\n]s", strcpy(newNode->type, type)); // strcpy have to use after the scanf and not in the same time.
}while(strcmp(newNode->type, "yes")!=0 && strcmp(newNode->type, "no")!=0 );
заменить на:
scanf(" %[^\n]s", type); strcpy(newNode->type, type);
/* Store data inside type, then copy inside newNode->type */
Строка while с двумя условиями AND
}while(strcmp(newNode->type, "yes")!=0 && strcmp(newNode->type, "no")!=0 );
Это означает: newNode-> type = yes AND newNode -type = no
newNode не может иметь два значения одновременно, лучше использовать «ИЛИ», как показано в следующем коде:
}while(strcmp(newNode->type, "yes")!=0 || strcmp(newNode->type, "no")!=0 );