几行简单的代码


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]当成结束符了,碰到这种情况,如何才能全部打印出来呢?
...全文
199 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
永夜将尽 2013-03-17
  • 打赏
  • 举报
回复
楼上的均为正解!可以用for循环将这些数全部打印出来!
  • 打赏
  • 举报
回复
楼上正解 0x00 在数组中,数组会默认其为结束符'\0'。要记住,数组是以结束符来标志结束的。 要想输出它,用%d格式化,告诉编译器,这是数字,不是结束符。 就像你定义的,sendBuf[10]。没有初始化。后面初始化到第八个(下标为7的这个),后面的sendBuf[8]是随机数,sendBuf[9]也是随机数。 下面的循环遍历 for(i=0;i<10;++i) { printf("%d\n",*PtestChar); PtestChar++; } 程序会崩溃的。 好习惯是,定义了什么,就立即初始化。
潜行狙击 2013-03-16
  • 打赏
  • 举报
回复
	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;

	for(i=0;i<8;++i)
	{
		printf("%d\n",*PtestChar);
		PtestChar++;
	}
潜行狙击 2013-03-16
  • 打赏
  • 举报
回复
0x00,NULL是相等的,你要打印就只能明确指明打印的个数

65,184

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧