質問: int main(void) { int a=0,b=0; printf("入力をしてください\n"); while (1) { scanf("a=%d b=%d",&a,&b); if (a != 0 && b != 0) { printf("OKです\n%d %d\n",a,b); break; }else{ printf("NG\n"); } } return 0; } 間違った入力を失敗すると NG を出力してもう一度入力からやり直すというプログラムを作りたいのですが上記のプログラムを実行して間違った入力をすると無限に NG が出力され続けます。 どうしたら正常に動きますか、ご教授お願いします。
回答: fflushで入力バッファをクリアする回答があり自分もその方法で良いかと思ったのですが、調べてみるとfflushによる標準入力のクリアは未定義になるようです。 なので代替策として、NGの場合は標準入力の空読みをさせてみました。 こちらでどうでしょうか。 ``` int main(void) { int a=0,b=0; printf("入力をしてください\n"); while (1) { scanf("a=%d b=%d",&a,&b); if (a != 0 && b != 0) { printf("OKです\n%d %d\n",a,b); break; }else{ printf("NG\n"); } while(fgetc(stdin) != '\n'); } return 0; } ```