打印

怎么操作这个字符串?

[复制链接]
1518|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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 | 只看该作者
解决了,结贴

使用特权

评论回复
5
gyh974| | 2013-7-20 13:49 | 只看该作者
楼主怎么样解决的呢?是用什么方法

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

211

主题

649

帖子

2

粉丝