关于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.
你可以自己计算长度,用一个变量。