【发布时间】:2013-06-21 15:37:52
【问题描述】:
我正在寻求一些帮助,以了解我获得价值的原因。我有一个非常基本的菜单可以在 KL25Z 微控制器(32 位架构)上选择和设置值。我有一个 int 不会打印高于 255 的值。我做错了什么?
信标.h
typedef struct _payload_t {
int t1_range;
} PAYLOAD_T;
beacon.c
#define BUFFSIZE 100
PAYLOAD_T payload;
int main (int argc, char *argv[])
{
char line[2];
int ret, select;
// print menu
print_menu();
// get menu input
ret = readline(line, BUFFSIZE, stdin, stdout);
select = atoi(line);
switch(select)
{
case 1:
uprintf(" Target 1 Starting Range: ");
ret = readline(line, BUFFSIZE, stdin, stdout); //--> 257
payload.t1_range = atoi(line);
printf(" Selection = %s\r\n", line); //--> 257
printf("(%d)\r\n",payload.t1_range); //--> 1
break;
... rest of case
}
return 0;
} //end main
在输入高于 255 的值之前一切正常,然后显示的值似乎恢复为 1。如果 payload.t1_range 是 int(16 位),为什么它的行为类似于 8 位?
任何帮助或指导将不胜感激。
谢谢!
【问题讨论】:
-
是您的代码的准确表示吗?一个
BUFFSIZE有两个F。 -
同意;请发布真实代码。
-
最接近
typdef的关键字是typedef。此外,您的line是一个 两个 元素数组 char (无论BUFFSIZE或BUFSIZE可能是什么)。 -
你声明 line 为 2 字符数组并输入 3 位数字?
-
百万美元问题:你在读一个简单的数字,为什么不能用一个愚蠢的
scanf("%d", &(payload.t1_range));