在以下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);
}
Run Code Online (Sandbox Code Playgroud)
不scanf读的'\n',在年底进入了scanf()在第一次迭代,为第二次迭代的输入?
scanf留下指向的输入流\n.在你的情况下,它没有什么区别:每次调用它时,scanf都会移动,直到找到下一个非空白字符.因此,给它10行name, a, b作为输入将按预期工作.
但考虑一下:
scanf("%d", &a);
fgets(str, 20, stdin);
Run Code Online (Sandbox Code Playgroud)
fgets读取直到它找到第一个换行符,所以str只会得到的值\n,并且fgets将不读取输入的下一行.