关于C#:scanf()是否使用’ ‘作为上一个scanf()的剩余输入? cscanf Does scanf() take ' ' as input leftover from previous scanf()? 在下面的C代码中: 12345678910char name[20]; int a; int b; for(i=0;i<10;i++) { printf(" Enter name, a & b:"); scanf("%s %d %d",name,&a,&b); } 在第一次迭代中,scanf会读入在scanf()末尾输入的' '中,用于第二次迭代输入吗? 相关讨论 您为什么不尝试通过调试器运行此代码,看看会发生什么。 然后,如果其意外或不清楚,请在该方面提出问题。 scanf使输入流指向 。 对于您而言,这没有什么区别:每次调用它时,scanf都会一直移动直到找到下一个非空白字符。 因此,给它10行name, a, b作为输入将按预期工作。 但是考虑一下: 12scanf("%d", &a); fgets(str, 20, stdin); fgets进行读取,直到找到第一个换行符为止,因此str只会得到 的值,而fgets不会读取输入的下一行。