私は次のプログラムを持っています:
int main(int argc, char *argv[])
{
int a, b;
char c1, c2;
printf("Enter something: ");
scanf("%d",&a); // line 1
printf("Enter other something: ");
scanf("%d", &b); // line 2
printf("Enter a char: ");
scanf("%c",&c1); // line 3
printf("Enter another char: ");
scanf("%c", &c2); // line 4
printf("Done"); // line 5
system("PAUSE");
return 0;
}
私がCの本を読んだとき、著者はscanf()
バッファに改行文字を残したと言っています。したがって、プログラムはユーザーがデータを入力するために4行目で停止するのではなく、c2に改行文字を格納してに移動します。 5行目。
そうですか?
ただし、これはchar
データ型でのみ発生しますか?int
1、2、3行目のようなデータ型ではこの問題は見られなかったので、正しいですか?
fflush(stdin)
呼び出す前に使用できることが提案される場合がありscanf()
ます。その方法の長所と短所および代替方法(Windowsでは多かれ少なかれ機能し、他のほとんどの場所では機能しない)の説明については、「使用法fflush(stdin)
」をお読みください。