大家帮忙看看这两行代码! pChunkBuf后没有字符串的结束符!!你定义51个byte,最后一个写入null 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 既然你的内存块里面有正好 50 个字符,就证明是对的。后面的内容不是你的内存块里的内容。因为 VC Debugger 把 BYTE* 当作字符串来显示的缘故。 你不要用new操作符,new操作符经常会带来这种问题,你不妨直接用auto变量声明一个变量,然后初始化它,再用,应该就可以了! 啊,我猜是你memcpy时 ,的pChunkBuf最后不是'\0'字符,所以才会输出一个字符串是获得串首地址,然后输出直到遇到'\0'结束。完全可能pBuf的第50的一个字符不是'\0'哟,然后如上所说的现象发生哦 belle:我的pBuf是这样得到的: long lLen = strSpt.GetLength(); BYTE *pBuf = (unsigned char *)strSpt.GetBuffer(lLen); 是不是要这样: long lLen = strSpt.GetLength(); BYTE *pBuf = (unsigned char *)strSpt.GetBuffer(lLen) + "\0"; 我自己再试试! long lLen = strSpt.GetLength();BYTE *pBuf = (unsigned char *)(strSpt.GetBuffer(lLen) + char('\0')); 这样还不行! BYTE *pChunkBuf = NULL;if(pChunkBuf = new BYTE[50]) { pChunkBuf[50]='\0'; ::memcpy(pChunkBuf, pBuf, 50); } 搞错了,BYTE *pChunkBuf = NULL;if(pChunkBuf = new BYTE[50]) { pChunkBuf[49]='\0'; ::memcpy(pChunkBuf, pBuf, 50); } Please try:BYTE *pChunkBuf = NULL;if((pChunkBuf = new BYTE[51]) != NULL){ memcpy(pChunkBuf, pBuf, 50); pChunkBuf[50] = 0; } 建议:pChunkBuf=new BYTE[51];if(pChunkBuf){ memset(pChunkBuf,0,51); memcpy(pChunkBuf, pBuf, 50);} 非常感谢各位!也不知道CSDN论坛是哪个弱智的家伙写的,限制一个人只能回复同一个贴子三次,弄得我有得贴子没办法送分了! 如何使用MFC regular dll 导出非模态对话框,谢啦 请教:简体软件繁体化 2003下的问题,在线等。。 求助:如何在cmainform中获得ctreeview的窗口指针 帮帮我吧!关于链接器设置问题 ODBC SDK3.0 当中如何进行日期比较? VC下如何接收COM+事件 ocx对外的接口函数在工程里要怎么声明外部才能调用 怎么定义enum? 怎样控制鼠标 窗口分割的问题,一直没法解决,向高手请教 谁能告诉我哪里能找到 libbzip2 压缩算法的源代码?
输出一个字符串是获得串首地址,然后输出直到遇到'\0'结束。
完全可能pBuf的第50的一个字符不是'\0'哟,然后如上所说的现象发生哦
long lLen = strSpt.GetLength();
BYTE *pBuf = (unsigned char *)strSpt.GetBuffer(lLen); 是不是要这样:
long lLen = strSpt.GetLength();
BYTE *pBuf = (unsigned char *)strSpt.GetBuffer(lLen) + "\0"; 我自己再试试!
BYTE *pBuf = (unsigned char *)(strSpt.GetBuffer(lLen) + char('\0')); 这样还不行!
if(pChunkBuf = new BYTE[50])
{
pChunkBuf[50]='\0';
::memcpy(pChunkBuf, pBuf, 50);
}
BYTE *pChunkBuf = NULL;
if(pChunkBuf = new BYTE[50])
{
pChunkBuf[49]='\0';
::memcpy(pChunkBuf, pBuf, 50);
}
if((pChunkBuf = new BYTE[51]) != NULL)
{
memcpy(pChunkBuf, pBuf, 50);
pChunkBuf[50] = 0;
}
if(pChunkBuf)
{
memset(pChunkBuf,0,51);
memcpy(pChunkBuf, pBuf, 50);
}
也不知道CSDN论坛是哪个弱智的家伙写的,限制一个人只能回复同一个贴子三次,
弄得我有得贴子没办法送分了!