C语言求助:关于数字与字符串的对应怎么做

2019-07-20 23:57发布

如题。
我的需求是用printf打印出板卡类型等调试信息。

我知道printf显示字符的用法大概是下面这样:
printf("   the char is %s the chinese is %s   ","abcdefg,","中华五千年");

也会把字符放在数组里:
char *BoardType_Display [3]={
"主控板",
"采集板",
"发送板"
}


printf("   the board type is %s   ","abcdefg,",BoardType_Display [1]);


上面的例子中我是用数组的下标来对应板卡类型的。实际上板卡类型是用两个字节来表示的,比如0x0302代表采集板,0x0101代表主控板。

那么请问我该怎样把板卡类型和那两个字节对应起来并通过串口打印出来呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
XUZJWWSZ
1楼-- · 2019-07-22 06:59
yyx112358 发表于 2016-1-30 10:20
不太清楚LZ是什么需求。这个数字是写代码的时候定义的呢?还是运行时根据某些函数返回值来决定的呢?
最保 ...

需求就是比如我知道了0X0302,就可以以他为参数打印出采集板这三个字。
我也想过switch case,资源占用没深究过,但是板卡特别多的时候会使调试代码变得很长,看起来很不漂亮。
XUZJWWSZ
2楼-- · 2019-07-22 10:09
我暂时用了一个二维数组解决它:
char *BoardType_Display [board_type_number+2]={
"默认板",
"未定义的板",
"主控板",
"主交叉板",
"单路发送板",
"8路发送板",
"32路发送板",
"8路采集板",
"32路采集板",
"传感器采集板"

};

uint8_t BoardType_Display_table[5][4]={
{0,1,1,1},
{1,2,3,1},
{1,4,5,6},
{1,7,8,1},
{1,9,1,1}       
};

然后比如说我得到的板卡类型是0x0302,
我就调用函数:
printf(" 板卡类型是 %s",BoardType_Display[BoardType_Display_table[0x03][0x02]]);
XUZJWWSZ
3楼-- · 2019-07-22 13:08
但是假如板卡类型是0xff5a,那我这个方法就显得很无力了。我相信一定有其他结构可以实现这种对应关系的。
emWin
4楼-- · 2019-07-22 17:58
至少可以用查找表,用二分法找也不会太慢。
XUZJWWSZ
5楼-- · 2019-07-22 21:56
 精彩回答 2  元偷偷看……

一周热门 更多>