BYTE RcvData[300];
RcvData[0] = 0x25;
RcvData[1] = 0x00;
RcvData[2] = 0x00;
RcvData[3] = 0x00;
RcvData[4] = 20;
RcvData[5] = 0x66;////字符 'f'的ASCII码
for (int i=1;i<100;i++)//初始化
{
RcvData[5+i] = RcvData[5+i-1] + 1;
}
char *pVersion = NULL;
pVersion = new char[RcvData[4]];//分配空间
memset(pVersion,0,RcvData[4]);
memcpy(pVersion,&RcvData[5],RcvData[4]);
GetDlgItem(IDC_STT_VERSION)->SetWindowText(pVersion);//显示在STATIC中
free(pVersion);
pVersion本来预期的结果是fghijklmnopqrstuvwxy ,, 但是最后的结果是 fghijklmnopqrstuvwxy的后面多了一些乱码
请各位帮忙改正一下,还有就是期待字节数组转ASCII码的代码,不胜感激
5 个解决方案
#1
有乱码说明在字符串的最后你没有加\0
#2
pVersion = new char[RcvData[4]+1];//分配空间
memset(pVersion,0,RcvData[4]+1);
memset(pVersion,0,RcvData[4]+1);
#3
问题解决,谢谢拉.
#4
RcvData[4] = 20;
"fghijklmnopqrstuvwxy"长度也是20,'\0'需要一位存放,你这样分配就导致'\0'没地方放,所以后面就是乱码
"fghijklmnopqrstuvwxy"长度也是20,'\0'需要一位存放,你这样分配就导致'\0'没地方放,所以后面就是乱码
#5
我也要看看
#1
有乱码说明在字符串的最后你没有加\0
#2
pVersion = new char[RcvData[4]+1];//分配空间
memset(pVersion,0,RcvData[4]+1);
memset(pVersion,0,RcvData[4]+1);
#3
问题解决,谢谢拉.
#4
RcvData[4] = 20;
"fghijklmnopqrstuvwxy"长度也是20,'\0'需要一位存放,你这样分配就导致'\0'没地方放,所以后面就是乱码
"fghijklmnopqrstuvwxy"长度也是20,'\0'需要一位存放,你这样分配就导致'\0'没地方放,所以后面就是乱码
#5
我也要看看