简单scanf不设置变量值

时间:2015-05-19 23:18:23

标签: c scanf

我在C中编写了这个简单而简短的代码,无法让它正常工作:

#include <stdio.h>

int main(void) {
    char var1[2];
    int var2, var3;
    unsigned char var4;

    scanf("%s %d %d %d", var1, &var2, &var3, &var4);
    printf("%s %d %d %d\n", var1, var2, var3, var4);

    return 0;
}

如果我输入P2 45 45 200,我会收到P2 45 0 200,我无法理解为什么var3没有收到指定的值。

输入:P2 45 45 200

预期输出:P2 45 45 200

输出:P2 45 0 200

1 个答案:

答案 0 :(得分:3)

对于var4,您将其声明为unsigned char,但使用%d格式说明符读取它,该说明符调用未定义的行为。

如果您的编译器支持,我建议使用%hhu作为该字段的格式说明符。或者您可以将var4声明为int,并且 然后在unsigned char调用后将其分配给scanf()变量。