我试图让用户根据需要多次输入一个数字(并为每个数字创建一个链表节点)。
但是,我尝试了多种清除字符输入缓冲区的方法,但无济于事。奇怪的是,代码将执行一次,但第二次无法正确执行。
例如,使用下面的代码,终端读取:
would you like to enter an integer?
y
Enter an integer: 4
would you like to enter an integer?
y
**program terminates**
在我使用之前,我scanf("%c", yesno);
什至无法在最后一行输入“y”。它刚刚终止。
struct node *read_numbers(void){
struct node *first = NULL;
int n; char yesno;
yesno = 'y';
while( yesno == 'y'){
printf("Would you like enter an integer ((y) for yes/(n) for no):\n");
yesno = getchar();
while(getchar() != '\n');
if(yesno == 'y'){
printf("Enter an Integer:");
scanf(" %d", &n);
first = add_to_list(first, n);
} else {
return first;
}
} // end while
}
我阅读了字符输入和缓冲区,据说 getchar() 方法应该可以工作。我用错了吗?我也试过 scanf() 在“%c”前后有额外的空格,但无济于事。