我有以下程序:
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()
单个字符之前使用它。请阅读“使用fflush(stdin)
”以讨论该方法的优缺点和替代方法(该方法或多或少在Windows上有效,而在大多数其他地方则无效)。