コンソールから文字を読み取ろうとしています (while ループ内)。しかし、それは複数回読み取ります。
入力:
a
出力:
char : a char : char : '
コード:
while(..)
{
char in;
scanf("%c",&in);
}
どうすれば「a」だけ読めますか?
scanf("%c",&in);
次の繰り返しで消費される改行を残します。
次のように変更します。
scanf(" %c",&in); // Notice the whitespace in the format string
これはscanfに空白を無視するように指示します。
また
scanf(" %c",&in);
getchar(); // To consume the newline
1 文字だけを読み取るには、代わりにgetcharを使用します。
int c = getchar();
if (c != EOF)
printf("%c\n", c);
余分な文字を吸収するために、後に改行文字をscanf("%c",&in);
追加できます\n
%c
scanf("%c\n",&in);
いつでも使用できますchar a = fgetc (stdin);
。型破りですが、 と同じように機能しgetchar()
ます。
あなたはこのようにすることができます。
char *ar;
int i=0;
char c;
while((c=getchar()!=EOF)
ar[i++]=c;
ar[i]='\0';
このように、文字列を作成しますが、実際には char 配列です。