怎么操作这个字符串?

[复制链接]
 楼主| entepino 发表于 2012-6-6 19:30 | 显示全部楼层 |阅读模式
如何操作字符啊?
定义了字符数组:
const uint8_t IconCmd[]
=
{0xAA,0x99,'\0'};

const uint8_t
LevelThousandCmd[]
=
{0x01,0x4F,0x00,0x8D,0x00,'\0'};

const uint8_t
LevelHundredCmd[]
=
{0x01,0x82,0x00,0x8D,0x00,'\0'};

const uint8_t
LevelTenCmd[]
=
{0x01,0xAF,0x00,0x8D,0x00,'\0'};

const uint8_t
LevelSingleCmd[]
=
{0x01,0xDC,0x00,0x8D,0x00,'\0'};

const uint8_t
LevelFractionalCmd[]
=
{0x02,0x1F,0x00,0x8D,0x00,'\0'};


想把这些字符连接起来,用sprintf函数:
CmdSize =
sprintf((char *)tmpCmd,"%s%s%c",IconCmd,LevelThousandCmd,ThousandBit);


发现这样一个故障,在连接时,Icon[2]=0x00,这个数丢失,函数认为0x0为结束符,其实
IconCmd[0] = 0xAAIconCmd[1] = 0x99IconCmd[2] = 0x00IconCmd[3] = 0x00
当函数操作到第三个数据是就认为此字符结束了;同样,LevelThousandCmd也是一样,操作到第三个数据0x00时,函数认为此字符结束了,这样就丢失了0x00,0x8D,0x00。请问该怎么处理,才能让sprintf函数实现我想要的结果?

 楼主| entepino 发表于 2012-6-6 19:43 | 显示全部楼层
哪位高人知道,指点一下,谢谢!
dqyubsh 发表于 2012-6-6 20:36 | 显示全部楼层
用字符串连接函数是不行的,它遇到0x00就认为字符串截止了,这类函数包括strcpy,strncpy, sprintf等等。

尝试一下memcpy,它没这个限制。
 楼主| entepino 发表于 2012-6-8 16:42 | 显示全部楼层
解决了,结贴
gyh974 发表于 2013-7-20 13:49 | 显示全部楼层
楼主怎么样解决的呢?是用什么方法
您需要登录后才可以回帖 登录 | 注册

本版积分规则

213

主题

651

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部