为什么输入时%d后面多了一个空格就需要多输入一个数字才能运行出结果

如图,我在写的时候没注意,多打了一个空格,导致我输入1 2 3 再按回车就没结果,而输入1 2 3 4就有结果了,这是为啥

img

img

当参数为"%d "的时候,此时没有处理到结尾,scanf()会认为你要继续进行输入。然而你输入了空格或者回车,scanf()认为他们是分隔符,于是“吃空白”吃掉了。换句话来说,scanf()依旧在等待你的输入,只有当你输入不是空白的字符以后,scanf()才会用它与参数字符串里面的空格比较。

#include<stdio.h>

int main()
{
    int A[3] = { 0 };
    for (int i = 0; i < 3; i++)
    {
        scanf("%d", &A[i]);
    }
    for (int j = 0; j < 3; j++)
    {
        printf("%d ", A[j]);
    }
    return 0;
}

因为要把空格填充上,scanf里的空格删掉就行了呀