scanf()格式字符串中的空格

时间:2017-12-20 10:11:30

标签: c input output scanf whitespace

#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解释......

2 个答案:

答案 0 :(得分:0)

看看this

您可以在%d&#39;之间使用空格。 这将要求用户输入如下内容:12 32(带空格)。

如果你不想这样,你应该使用一个带有scanf的循环。

祝你好运。

答案 1 :(得分:0)

如果您在数字后面留出空格,scanf必须确定要匹配的空格的结尾:

scanf("%d ", &a);

此处空格意味着读取并放弃所有空白。必须为scanf显示非空格字符(或EOF),以便明确 所有 是什么,以便正确读取和丢弃它们。

考虑这个输入流(点是字符指示符):

   1   2
........

如果您拨打scanf("%d"),则在致电后,剩余的电流为

   2
....

......在下次阅读>时,空格将被丢弃。请注意,读取数字时会自动丢弃前导空格。

如果您改为呼叫scanf("%d "),则剩余信息流为

2
.

你看到空格立即消失了。