何らかの理由でwhileループが2回実行され、入力を求めるプロンプトが表示される前に文字列が2回出力されます。私は入力バッファに文字が入っていると仮定していましたが、それは私には分かりません。何かアドバイス?whileループはprintfを2回生成してから入力を要求しますか?
while (count >= 0 && stop != 83 && isClosed == 0) {
printf("Percentage of Door Closed: %d\n",count);
count -= 10;
printf("If sensor detects object press 'S'\n");
printf("Press any button to continue closing door\n");
stop = getchar();
if (count == 0) {
isClosed=1;
}
}
出力:
Percentage of Door Closed: 100
If sensor detects object press 'S'
Press any button to continue closing door
Percentage of Door Closed: 90
If sensor detects object press 'S'
Press any button to continue closing door
a
Percentage of Door Closed: 80
If sensor detects object press 'S'
Press any button to continue closing door
Percentage of Door Closed: 70
If sensor detects object press 'S'
Press any button to continue closing door
S
一文字を入力してEnterキーを押すと、入力した文字と打鍵からの「\ n」文字の2つの文字が 'stdin'に入ります。 –
stop = nullを実行しますか? whileループが発生するのを防ぐ前に?私はそれを試みたが、それでもまだ2回実行する。 –
いいえ、あなたは '\ n'を消費して無視しなければなりません。すべての改行文字をスキップするにはwhile((stop = getchar())== '\ n'); 'を実行します(ループはループし、 '\ n'でなければ次の文字に' stop'を設定します) 、またはあなたは、下のperrealやjohn bodeが言ったことをすることができます。 –