web-dev-qa-db-ja.com

Cでの単一文字の読み取り

コンソールから文字を読み取ろうとしています(whileループ内)。しかし、それは複数回読みます。

入力:

a

出力:

char : a  char : char : '

コード:

while(..)
{
    char in;
    scanf("%c",&in);
}

「a」のみを読み取るにはどうすればよいですか?

10
g3d
scanf("%c",&in);

次の反復で消費される改行を残します。

次のように変更します。

scanf(" %c",&in); // Notice the whitespace in the format string

これは、空白を無視するようにscanfに指示します。

OR

scanf(" %c",&in);
getchar(); // To consume the newline 
30
P.P.

文字を1つだけ読み込むには、代わりに getchar を使用します。

int c = getchar();
if (c != EOF)
  printf("%c\n", c);
6
Douglas

scanf("%c",&in);では、%cの後に余分な文字を吸収するために改行文字\nを追加できます

scanf("%c\n",&in);
2