scanf()将’\ n’作为前一个scanf()的剩余输入吗?
在以下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
不会读取下一行输入。