char msg[1000]都显示成了“烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫....”,谁能帮我改正?让它正常输出?

111222 2001-07-29 01:11:00

源代码在:
http://263.csdn.net/FileBBS/files/2001_7/T_349_1.zip

这是一个检查PE结构分析用了哪些DLL的源代码,显示的结果显示在listctrl里面,但因为字符串问题,结果里面有大量的乱码“烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫....”,而不是应该的用到的DLL的名字。

Debug进去看到的部分值是正常的,后期不知怎么却又“烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫....”了。

最早用CString来显示,根本没法运行,后来被迫换成了char数组。看来CString也不是万金油,谁能告诉我是为什么?

还有一个问题就是,输入 路径+文件名 的结果有很多missing

而如果文件在同一目录直接 输入 文件名就正常了,即使是同一文件经过上面两种方式也有不同的结果。甚为不解。

再说一遍:源代码在 http://263.csdn.net/FileBBS/files/2001_7/T_349_1.zip
...全文
1503 34 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
windows_editor 2001-07-31
  • 打赏
  • 举报
回复
是因为你的数组中后面没用到的地址计算机自动给它付值的缘故,
somn 2001-07-31
  • 打赏
  • 举报
回复
因为“烫”字的内码是“0xCCCC”,而VC在Debug Build时生成的函数在建立局部变量的空间时会用"0xCCCC"填充每一个局部变量空间的字节,对于msg[???]的情况,很正常被Debugger认成N个“烫”
Sam_Yang 2001-07-31
  • 打赏
  • 举报
回复
这是 最简单的方法,给分
Sam_Yang 2001-07-31
  • 打赏
  • 举报
回复
将 CPECheck::ListMsg 中 的 PostMessage 换成 SendMessage 就 ok 了
victorchen_2000 2001-07-31
  • 打赏
  • 举报
回复
如果char msg[1000]; 是个临时变量,
PostMessage(m_hwnd,WM_PECHECK,(WPARAM)lpctstr,NULL);
所在函数执行后lpcstr就被释放了,所以会很"烫"
如果是全局变量则不会“烫”.
不过全局变量太多了也不好,特别是有时会有很多消息,有时消息传递的是复杂的结构。
也可以这样:
char *msg;
msg = (char*)malloc();
...PostMessage....

在消息处理后释放msg
biggo 2001-07-31
  • 打赏
  • 举报
回复
我觉得是数据绑定的类型错了,
建议 char msg[1000]; 改为TCHAR msg[1000]

因为我刚重装了机,还没有来得急装vc6没有办法调试,只能先提个建议!
我在用ado写数据库的时候,遇到过烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫的问题
最后的结果就是数据绑定类型错了!
kyokyo 2001-07-31
  • 打赏
  • 举报
回复
{
char msg[50];
memset(msg,'\0',50);
sprintf(msg," forwarder: %-12s %08X ",dosHeader + bidRVA + pibfr->OffsetModuleName,pibfr->TimeDateStamp);
ListMsg(msg);
pibfr++;
pibid = MakePtr(PIMAGE_BOUND_IMPORT_DESCRIPTOR,pibid,sizeof(IMAGE_BOUND_FORWARDER_REF));
//在这里,你的msg【】被人(系统)删除了
}
q12345 2001-07-31
  • 打赏
  • 举报
回复
实际字符必须正好1000,多一个少一个,都会出现此问题。
a_gan 2001-07-31
  • 打赏
  • 举报
回复
有那么麻烦吗?
char msg[1000] = "";
konfyt 2001-07-31
  • 打赏
  • 举报
回复


夏天 夏天 夏天 夏天 夏天 夏天 夏天 夏天 夏天 夏天 夏天 夏天 夏天 夏天 夏天 夏天 夏天
whitelion 2001-07-30
  • 打赏
  • 举报
回复
同意kevin_wang(kevin神) 的看法
同桌老王 2001-07-30
  • 打赏
  • 举报
回复
这个现象见多了,一般说来是计算机随即显示的内存数据,你所定义的字符串,或者数组在你赋值之后,还没来得及显示,就被你的某个操作给删除了这块内存,或者你根本没有为之赋值,检查一下,你是不是在什么地方隐含着有删除对象的嫌疑?
祝你快乐
joe_fox1025 2001-07-30
  • 打赏
  • 举报
回复
牛,真牛
hp1200 2001-07-30
  • 打赏
  • 举报
回复
up
tlovexyj 2001-07-30
  • 打赏
  • 举报
回复
因为post是马上返回,这时可能还未取到你所要的值,或只取了部分。
而send是需要等消息后才返回,所以~
mahongxi 2001-07-30
  • 打赏
  • 举报
回复
static char mess[1000];
fsb_12345 2001-07-30
  • 打赏
  • 举报
回复
先把数组初始化后再用,就不烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫...了
深圳峰哥 2001-07-30
  • 打赏
  • 举报
回复
太烫了,请不要超频
哈哈。。。
天空蒙蒙的雾 2001-07-30
  • 打赏
  • 举报
回复

你定义的是静态的数组吗,初始化时已经有了一个不确定的值,显示出来时就是烫。不是计算机觉

得烫。
111222 2001-07-29
  • 打赏
  • 举报
回复


太奇怪了,为什么????

为什么PostMessage会出现乱码?????我想知道为什么......

那两个东东定义在 WINNT.H 里面。

加载更多回复(14)

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧