教えて!gooにおける不適切な投稿への対応について

コンソールアプリケーション上で文字列を表示させた後、ユーザーがエンターキーを押したら次の文字列を表示するという仕様にしたいのですが、エンターキーだけ入力待ちにするっていうのはどのように書けばいいんでしょうか?

gooドクター

A 回答 (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;
}
    • good
    • 6

#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<エンターキー>」のように、沢山の文字を打ち込んだ時。実行してみると判るが
+++>
の次で止まらずに素通りする。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング