有誰知道下面的代碼可能是什麼問題?當我運行它,我得到以下的輸出:鏈接列表問題
Insert a value in the list: 1
Do you want to continue? y/N:
1 ->
的事實是,do-while循環執行,直到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;
}
這裏是一個完整的鏡頭,第二個'scanf'可以在換行符中讀取嗎? –
將add_node的方法簽名更改爲接受struct node *參數,然後將head的地址作爲參數傳遞給您的函數調用。這應該做到這一點。 – Clocks
GDB消息用於通知您無法步入GLIB文件,只需按c繼續。 – Clocks