题
在以下C代码中:
char name[20];
int a;
int b;
for(i=0;i<10;i++)
{
printf("\nEnter name, a & b: ");
scanf("%s %d %d",name,&a,&b);
}
执行 scanf
读取在第一次迭代中 scanf()
末尾输入的'\ n'
,用于第二次迭代输入?
解决方案
scanf
使输入流指向 \ n
。在你的情况下,它没有什么区别:每次调用它时, scanf
将一直移动,直到找到下一个非空白字符。因此,给它10行 name,a,b
作为输入将按预期工作。
但请考虑一下:
scanf("%d", &a);
fgets(str, 20, stdin);
fgets
读取,直到找到第一个换行符,因此 str
将获得 \ n
和 fgets的值
将不读取下一行输入。
不隶属于 StackOverflow