- ベストアンサー
Enterキーを押されたら次の処理に移るという事をしたい。
コンソールアプリケーション上で文字列を表示させた後、ユーザーがエンターキーを押したら次の文字列を表示するという仕様にしたいのですが、エンターキーだけ入力待ちにするっていうのはどのように書けばいいんでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#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)
- chie65536
- ベストアンサー率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<エンターキー>」のように、沢山の文字を打ち込んだ時。実行してみると判るが +++> の次で止まらずに素通りする。