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

时间:2018-03-08 12:50:15

标签: 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;
}

that what I get

1 个答案:

答案 0 :(得分:5)

首先,您应该始终查看scanf 返回的内容。

其次,如果您阅读之前链接的参考文献,您会看到"%d"格式跳过领先的空白区域。

第三,通过使用scanf格式的尾随空格,您告诉scanf跳过尾随空格。当它这样做时,它需要读取的内容是一个空格,或者它不会知道空格何时结束。

猜测第三个​​问题是你真正要问的问题。