2015-05-19 25 views
0

我在用C写这个简单的短代码,并不能让它正常工作:简单scanf函数不设置变量值

#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

回答

3

var4,声明它作为unsigned char,但使用%d格式说明,它调用未定义的行为读它。

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

+0

谢谢,它像一个魅力。 –