5

在以下 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);
}

是否在第 1 次迭代结束时scanf读取输入的第 2 次迭代输入?'\n'scanf()

4

1 回答 1

5

scanf让输入流指向\n. 在您的情况下,它没有任何区别:每次调用它时,scanf都会继续移动,直到找到下一个非空白字符。因此,给它 10 行name, a, bas 输入将按您的预期工作。

但是考虑一下:

scanf("%d", &a);
fgets(str, 20, stdin);

fgets读取直到找到第一个换行符,所以str只会得到一个值\n并且fgets不会读取下一行输入。

于 2009-11-29T16:41:45.860 回答