读书人

几行容易的代码

发布时间: 2013-03-19 17:22:05 作者: rapoo

几行简单的代码


unsigned char sendBuf[10];
unsigned char *PtestChar=sendBuf;
sendBuf[0] = 0x81;
sendBuf[1] = 0x0A;
sendBuf[2] = 0x02;
sendBuf[3] = 0x16;
sendBuf[4] = 0x81;
sendBuf[5] = 0x0A;
sendBuf[6] = 0x00;
sendBuf[7] = 0x16;

while(*PtestChar!=NULL)
{
printf("%d\n",*PtestChar);
PtestChar++;
}

可以看出只能打印到sendBuf[5],把sendBuf[6]当成结束符了,碰到这种情况,如何才能全部打印出来呢?
[解决办法]
0x00,NULL是相等的,你要打印就只能明确指明打印的个数
[解决办法]
楼上正解

0x00 在数组中,数组会默认其为结束符'\0'。要记住,数组是以结束符来标志结束的。
要想输出它,用%d格式化,告诉编译器,这是数字,不是结束符。
就像你定义的,sendBuf[10]。没有初始化。后面初始化到第八个(下标为7的这个),后面的sendBuf[8]是随机数,sendBuf[9]也是随机数。
下面的循环遍历
for(i=0;i<10;++i)
{
printf("%d\n",*PtestChar);
PtestChar++;
}
程序会崩溃的。
好习惯是,定义了什么,就立即初始化。

读书人网 >C++

热点推荐