この while ループの問題は非常に一般的であり、通常は入力ストリームの改行が原因であることを知っています。しかし、while ループを修正できませんでした。私の場合、なぜそれが起こっているのかよくわかりません。
次の例を検討してください。
int main()
{
int option = -1;
char buffer[100];
while (option != 10)
{
while(printf("Enter menu choice: \n"), gets(buffer), option < 0)
{
some code here dealing with buffer and assigning input to option...
}
printf("something\n");
}
return 0;
}
このコードの実装は無視してください (たとえば、入力を文字列ではなく整数に格納するなど)。これは、while ループの単純化されたバージョンにすぎません。私が懸念しているのは、実際にループを通過する前に、番号を 2 回入力する必要があることです。
出力:
メニューの選択肢を入力してください: 1
メニューの選択肢を入力してください: 1
すべてのライトがオンになっているライト設定: 1111 1111 1111 1111
この場合、なぜそれが起こっているのかわかりません...ありがとう!
更新: ご回答ありがとうございます。while() 条件を書き直してコードを修正しました
while(printf("\nEnter menu choice: \n"), gets(buffer), option = checkMenuOption(buffer), option < 0 && strcmp(buffer, ""));