在以下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的值读取下一行输入。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top