我在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
答案 0 :(得分:3)
对于var4
,您将其声明为unsigned char
,但使用%d
格式说明符读取它,该说明符调用未定义的行为。
如果您的编译器支持,我建议使用%hhu
作为该字段的格式说明符。或者您可以将var4
声明为int
,并且
然后在unsigned char
调用后将其分配给scanf()
变量。