C-Scanf没有获得正确的信息

时间:2018-11-21 19:25:10

标签: c

为什么在运行代码时会得到以下结果:

Name: Zeref
Age: 20
Float: 20.11
-----
Name: Zeref
Age: 1072324272
Dec: 0.000000

代码:

#include <stdio.h>
#include <stdlib.h>

int main(void) {
    char name[524288];
    int age[524288];
    float dec[524288];

    printf("Name: ");
    scanf("%s", name);
    printf("Age: ");
    scanf("%d", age);
    printf("Float: ");
    scanf("%f", dec);

    printf("-----\n");

    printf("Name: %s\n", name);
    printf("Age: %d\n", age);
    printf("Dec: %f\n", dec);

    return 0;
}

我的话没听懂,为什么?

我希望它完全打印出我写的内容,但使用age作为一个整数,使用dec作为浮点数,并使用名称作为字符串。只有名字有效

1 个答案:

答案 0 :(得分:1)

这只是将数组age的地址打印为十进制整数(实际上它引入了未定义的行为);

printf("Age: %d\n", age);

尝试一下

printf("Age: %d\n", age[0]);