首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于char数组长度的有关问题

2012-05-04 
关于char数组长度的问题我定义了一个数组如下char sendbuf[512]{0}往里面写入了3部分数据两个short一个

关于char数组长度的问题
我定义了一个数组如下

char sendbuf[512]={0};
往里面写入了3部分数据

两个short一个字符串

代码如下

unsigned short len = strlen(buff)+4;
unsigned short code = 8;

*(short *)(sendbuf) = len;
*(short *)(sendbuf + 2) = code;

memcpy(sendbuf + 4,buff,strlen(buff));
*(sendbuf + len) = '\0';

按照这样来看我个人觉得没有错
写完后sendbuf的长度通过strlen(sendbuf)来获得话应该是29(因为我自己写死的数据)

问题是为什么我写完了后长度只有2呢

并且前面两个short和后面拷贝进去的数据我分别打印出来都对的

如何获取到该数组的长度

请各位指点

[解决办法]
strlen(sendbuf+4);/// 前面两个short应该忽略
[解决办法]
unsigned short code = 8;

在内存中 表示为 00 08

用strlen 遇到这个 00 就以为是结束标志'\0'了,所以是2.

你可以自己计算长度,用一个变量。

热点排行