ユーザーに何度でも数字を入力させようとしています(そして、数字ごとにリンクリストノードを作成します)。
ただし、文字入力バッファをクリアする複数の方法を試しましたが、役に立ちませんでした。奇妙なことに、コードは 1 回実行されますが、2 回目は正しく実行されません。
たとえば、以下のコードでは、端末は次のように読み取ります。
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() メソッドが機能するはずです。私はそれを間違って使用していますか?また、「%c」の前後に余分なスペースを入れて scanf() を試しましたが、役に立ちませんでした。