我有以下程序:
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上有效,而在大多数其他地方则无效)。