#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解释......
答案 0 :(得分:0)
答案 1 :(得分:0)
如果您在数字后面留出空格,scanf
必须确定要匹配的空格的结尾:
scanf("%d ", &a);
此处空格意味着读取并放弃所有空白。必须为scanf
显示非空格字符(或EOF),以便明确 所有 是什么,以便正确读取和丢弃它们。
考虑这个输入流(点是字符指示符):
1 2
........
如果您拨打scanf("%d")
,则在致电后,剩余的电流为
2
....
......在下次阅读>>时,空格将被丢弃。请注意,读取数字时会自动丢弃前导空格。
如果您改为呼叫scanf("%d ")
,则剩余信息流为
2
.
你看到空格立即消失了。