Кто-нибудь знает, что может быть проблемой при использовании следующего кода? Когда я бегу, я получаю следующий результат:Связанный список проблем
Insert a value in the list: 1
Do you want to continue? y/N:
1 ->
Дело в том, что цикл делать-то время не выполняет до scanf("%c", &ch)
заявления, а затем выпрыгивает (так что я не могу представить какой-либо вход для переменной ch
) , Я пытался отладки с помощью GDB, и я получил некоторые странные сообщения:
GI___libc_malloc (bytes=16) at malloc.c:malloc.c: No such file or directory.
Кроме того, он говорит, что компилятор не может найти файл vscanf.c
. Кто-нибудь объясняет это странное поведение? Благодаря! (Намерение напечатать значения однократно связанный список в обратном порядке.)
#include <stdio.h>
#include <stdlib.h>
struct node{
int info;
struct node* next;
};
struct node* head = 0;
void add_node(int value){
struct node* current = malloc(sizeof(struct node));
current->info = value;
current->next = head;
head = current;
}
void print_node(struct node* head){
while(head){
printf(" %d -> ", head->info);
head = head->next;
}
printf("\n");
}
int main(void){
int val;
char ch;
do {
printf("Insert a value in the list: ");
scanf("%d", &val);
add_node(val);
printf("Do you want to continue? y/N: ");
scanf("%c", &ch);
} while(ch == 'y' || ch == 'Y');
printf("\n");
print_node(head);
return 0;
}
Полный выстрел в темноте здесь, может ли второе сканирование читать в новой строке? –
изменить метод подписи add_node, чтобы принять параметр struct node *, а затем передать адрес головы в качестве аргумента для вызова функции. Это должно сделать это. – Clocks
Сообщения GDB служат для информирования вас о том, что вы не можете входить в файлы GLIB, просто нажмите c, чтобы продолжить. – Clocks