谢谢大家的帮忙,是这样的。
我是在做串口程序练习的,先前只是提取另一台电脑发过来的数据,编辑框显示的内容也是正确的,后来就给发过来的数据加上头,长度这些,这样就使得我要显示的数据是被放在字符数组的第5个元素开始,共2个汉字 ,即元素5-8,先一个个放在CString类变量是正确的,再把CString变量的值给编辑框就只有得到1个汉字,for(k=5;k<len-1;k++)//将我要的数据从新放到别的数组里
{
wenben[u]=*(zhen+k);
u++;
}
for(k=0;k <u;k++)
{
str.Format("%c",ar[k]);
text+=str;
}
UpdateData(false);
u=0;
for(k=5;k <len;k++)//将我要的数据从新放到别的数组里
{
wenben[u++]=*(zhen+k);
}
wenben[n] = '\0';text.Format("%s",wenben);
UpdateData(false);
现在是新问题
给编辑框赋值,数组里明明是2个汉字即4个字节,用sizeof查编辑框是4个字节,可用strlen查了编辑框确是一个字符,但实际上我查了那数组真的收到了“你们”两个字。
COleSafeArray col;
wchar_t wenben[100];
wchar_t wwenben[100];
BYTE zhen[100];
char ar[100];
CString str,stra;
long len,k,u=0,n=0;
if(m_m.GetCommEvent()==2)
{
var=m_m.GetInput();
col=var;
len=col.GetOneDimSize();
for(k=0;k<len;k++)
{
col.GetElement(&k,zhen+k);
} for(k=5;k<len-1;k++)
{
wenben[u]=*(zhen+k);
u++;
}
for(k=0;k<u;)
{
wwenben[n]=((wenben[k]<<8))+(wenben[k+1]);
k++;
k++;
n++;
}
wwenben[n]=0;
//text.Format("%d",)
WideCharToMultiByte(CP_ACP, 0, wwenben, n, ar, u, NULL, NULL);
for(k=0;k<u;k++)
{
text.Format("%c",ar);
//text+=str;
}
//long q=strlen(stra);
//text.Format("%d",q);
UpdateData(false);
}
帮忙看下,谢谢
{
text.Format("%c",ar[k]);
text+=str;
}
这句那时在查错忘了改过来了。
真的不知道哪里出错了,断点调试,ar里是存了2个汉字