• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:繰り返し文について)

プログラムの実行時に数字を入力するたびに「数字を入力してください」と表示される理由は?

このQ&Aのポイント
  • プログラムをコンパイルして実行すると、数字を一文字入力するたびに「数字を入力してください」というメッセージが2回表示される現象が発生します。
  • この現象の原因は、プログラムのループが1回の文字入力で2回実行されているためです。
  • 解決するためには、プログラムのループを1回だけ実行するように修正する必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.2

>数字を入力してください > (1) > (2) >数字を入力してください 1文字入力、ということは、実際には 'a' '\n'(Enterキー) の2文字を入力していることになります。 (1)では、'\n'の入力を受取り、 (2)では、その'\n'を出力しています。 じゃまな'\n'を排除する方法はいくつかあります。 単純なのは、 if (ch != '\n') { /* 有効な文字ならば */ getchar(); /* 直後の'\n'を読み飛ばす */ } あたりでしょうか。 なお、getchar() の戻り値はint型であることにご留意ください。 char型ではありません。

nikoru222
質問者

お礼

回答どうもです。 なんとなく答えが見えてきそうな気がしてきました。

その他の回答 (1)

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

改行コードがCRLFとかだと、入力が、 a(0x61), CR(0x0d), LF(0x0a) などとして、改行コードを合わせて2文字ないし3文字入力されているとか。 getchar()の後などに、 printf("入力キャラクタコード=%x\n", ch); など、入力を数値的に確認する処理を追加して確認してみては。