在以下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
读取'\n'
在第一次迭代中输入的scanf()
,第二次迭代输入是什么?
答案 0 :(得分:5)
scanf
使输入流指向\n
。在你的情况下,它没有什么区别:每次调用它时,scanf
将一直移动,直到找到下一个非空白字符。因此,输入10行name, a, b
作为输入将按预期工作。
但请考虑一下:
scanf("%d", &a);
fgets(str, 20, stdin);
fgets
读取,直到找到第一个换行符,因此str
只会获得\n
的值,而fgets
将不阅读下一行输入。