- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:繰り返し文について)
プログラムの実行時に数字を入力するたびに「数字を入力してください」と表示される理由は?
このQ&Aのポイント
- プログラムをコンパイルして実行すると、数字を一文字入力するたびに「数字を入力してください」というメッセージが2回表示される現象が発生します。
- この現象の原因は、プログラムのループが1回の文字入力で2回実行されているためです。
- 解決するためには、プログラムのループを1回だけ実行するように修正する必要があります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>数字を入力してください > (1) > (2) >数字を入力してください 1文字入力、ということは、実際には 'a' '\n'(Enterキー) の2文字を入力していることになります。 (1)では、'\n'の入力を受取り、 (2)では、その'\n'を出力しています。 じゃまな'\n'を排除する方法はいくつかあります。 単純なのは、 if (ch != '\n') { /* 有効な文字ならば */ getchar(); /* 直後の'\n'を読み飛ばす */ } あたりでしょうか。 なお、getchar() の戻り値はint型であることにご留意ください。 char型ではありません。
その他の回答 (1)
- neKo_deux
- ベストアンサー率44% (5541/12319)
回答No.1
改行コードがCRLFとかだと、入力が、 a(0x61), CR(0x0d), LF(0x0a) などとして、改行コードを合わせて2文字ないし3文字入力されているとか。 getchar()の後などに、 printf("入力キャラクタコード=%x\n", ch); など、入力を数値的に確認する処理を追加して確認してみては。
お礼
回答どうもです。 なんとなく答えが見えてきそうな気がしてきました。