这个问题在这里已有答案:
#include<stdio.h>
int main() {
int a,b;
printf("Enter values of a and b\n");
scanf(" %d%d ",&a,&b);
printf("a=%d b=%d", a, b);
return 0 ;
}
这里如果我使用scanf(),就像在我的代码中一样,那么编译器希望用户输入三个值,我无法理解这一点,当我使用scanf()而没有任何空格时,它只按要求请求两个输入,所以我很困惑这两者之间的区别,PLZ解释......
如果你在数字后面给出一个空格,scanf
必须确定要匹配的空格的结尾:
scanf("%d ", &a);
这里的空间意味着读取并丢弃所有空格。必须为scanf
显示非空白字符(或EOF),以便清楚所有内容,以便正确读取和丢弃它们。
考虑这个输入流(点是字符指示符):
1 2
........
如果你打电话给scanf("%d")
,那么在打电话之后,剩下的流是
2
....
...在下次读取时将丢弃空格。请注意,读取数字时会自动丢弃前导空格。
如果你改为调用scanf("%d ")
,剩下的流是
2
.
你看到空白立即消失了。