解決済み

Enterキーを押されたら次の処理に移るという事をしたい。

  • 暇なときにでも
  • 質問No.3592117
  • 閲覧数16403
  • ありがとう数9
  • 気になる数0
  • 回答数2
  • コメント数0
コンソールアプリケーション上で文字列を表示させた後、ユーザーがエンターキーを押したら次の文字列を表示するという仕様にしたいのですが、エンターキーだけ入力待ちにするっていうのはどのように書けばいいんでしょうか?

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

  • 回答No.2

ベストアンサー率 22% (50/220)

#include <stdio.h>

int main(void)
{
char *str[] = {"abc", "def", "ghi", "jkl"};
int i;

for(i = 0; i < 4; i ++){
while(getchar() != '\n') ;
puts(str[i]);
}
return 0;
}

その他の回答 (全1件)

  • 回答No.1

ベストアンサー率 41% (2512/6032)

#include <stdio.h>
#include <stdlib.h>

void main(void)
{
  char c[2];
  printf("***>");
  do {
    fgets(c,2,stdin);
  } while ((c[0] != '\n') && (c[1] != '\n'));
  printf("+++>");
  do {
    fgets(c,2,stdin);
  } while ((c[0] != '\n') && (c[1] != '\n'));
}

エンターキー以外の文字は、fgetsを繰り返して、すべて捨てるようになっている。

以下のように繰り返し処理をしない場合、最初の1回目はうまく動くが、2回目で「素通り」する場合があり、失敗する。

#include <stdio.h>
#include <stdlib.h>

void main(void)
{
  char c[2];
  printf("***>");
  fgets(c,2,stdin);
  printf("+++>");
  fgets(c,2,stdin);
}

素通りするのは、1回目の
***>
の表示に対し「123<エンターキー>」のように、沢山の文字を打ち込んだ時。実行してみると判るが
+++>
の次で止まらずに素通りする。
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

ピックアップ

ページ先頭へ