0

この 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, ""));
4

2 に答える 2