Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
在以下 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()
scanf
'\n'
scanf()
scanf让输入流指向\n. 在您的情况下,它没有任何区别:每次调用它时,scanf都会继续移动,直到找到下一个非空白字符。因此,给它 10 行name, a, bas 输入将按您的预期工作。
\n
name, a, b
但是考虑一下:
scanf("%d", &a); fgets(str, 20, stdin);
fgets读取直到找到第一个换行符,所以str只会得到一个值,\n并且fgets不会读取下一行输入。
fgets
str