简单 scanf 不设置变量值

Simple scanf does not set variable value

我用 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

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

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