14

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

入力:

a

出力:

char : a  char : char : '

コード:

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

どうすれば「a」だけ読めますか?

4

5 に答える 5

37
scanf("%c",&in);

次の繰り返しで消費される改行を残します。

次のように変更します。

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

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

また

scanf(" %c",&in);
getchar(); // To consume the newline 
于 2013-01-19T23:20:20.917 に答える
6

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

int c = getchar();
if (c != EOF)
  printf("%c\n", c);
于 2013-01-19T23:29:29.000 に答える
3

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

scanf("%c\n",&in);
于 2013-01-20T09:15:12.673 に答える
0

いつでも使用できますchar a = fgetc (stdin);。型破りですが、 と同じように機能しgetchar()ます。

于 2020-01-04T09:16:43.647 に答える
-1

あなたはこのようにすることができます。

char *ar;
int i=0;
char c;
while((c=getchar()!=EOF)
   ar[i++]=c;
ar[i]='\0';

このように、文字列を作成しますが、実際には char 配列です。

于 2013-01-20T03:02:40.597 に答える