简单 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
变量。
我用 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
变量。