为什么scanf占用的空间比我给的多?

-4 c scanf

为什么scanf需要额外的尺寸?喜欢有什么不对劲:

int main() {
    printf("enter the first distance:\n");
    printf("Feet: ");
    scanf("%d\n", &d1.feet);
    printf("Inch:");
    scanf("%d\n", &d2.inch);

    printf("enter the second distance:\n");
    printf("Feet: ");
    scanf("%d\n", &d2.feet);
    printf("inch: ");
    scanf("%d\n", &d2.inch);

    sum.feet = d1.feet + d2.feet;
    sum.inch = d1.inch + d2.inch;

    printf("sum of distance: %d, %d", sum.feet, sum.inch);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

那就是我得到的

Som*_*ude 5

首先,你应该总是检查什么返回.scanf

其次,如果您阅读之前链接的参考,您将看到该"%d"格式跳过前导空白区域.

第三,通过在scanf格式中使用尾随空格,您将告诉scanf跳过尾随空格.虽然它这样做,但它需要读取的东西不是白色空间,或者它不会知道空间何时结束.

第三个问题就是你真正要问的问题.