问个问题,估计没人答得上来,先给20分,要真答上来了加分的有!

pjl110 2010-08-18 09:36:19
我用setwindowtext来设置一个cedit内的文本!
代码如下:
int CRegist::ShowCode(HWND h)
{
::SetWindowTextA (h,Code);
return 1;
}

其中Code是这样生成的!
int CRegist::DeCode()
{
for(int i = 0; i< CODE_LEN; i++)
{
for(int j = 0;j< CODEMAP_LEN; j+=1)
{
if(Code[i] == CodeMap[j][0] || Code[i] == CodeMap[j][1])
{
Code[i] = j;
break;
}
}
}
return 1;
}

然后启动程序!

那个cedit的正确输出应该是:


我在debug下得到正确输出

在release下却输出有误,如下:


我调整了程序的优化!
把vs默认的:

改成:


输出结果又正确了


此问题实在诡异!如有高手能答,定以重金40相酬!
...全文
89 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
teleinfor 2010-08-19
  • 打赏
  • 举报
回复
无他,你的code没有NULL结尾导致。自己的问题好好反省吧。
pjl110 2010-08-19
  • 打赏
  • 举报
回复
怎么没法给大家加分啊!不可以像baidu那样追加给分么?
pjl110 2010-08-19
  • 打赏
  • 举报
回复
非常感谢大家,是我自己把问题想复杂了!呵呵!果不其然!
kemee 2010-08-19
  • 打赏
  • 举报
回复
........debug和release一个帮你初始化,另一个不初始化而已吧。。。。楼主自己又没做
swlilike 2010-08-19
  • 打赏
  • 举报
回复
我有更变态的! 打开一次。h文件 程序正常编译 否则就编译不过去
muzizongheng 2010-08-19
  • 打赏
  • 举报
回复
问的挺叼, 可惜没难度。。。
gameslq 2010-08-18
  • 打赏
  • 举报
回复
估计在字符串结尾没加0结尾造成的
1.进入函数CRegist::DeCode 时 memset(Code,0,sizeof(Code)); 或者用其他方式初始化Code
2. 在赋值Code[i] = j;后 记录个 t++; return 1; 前 Code[t]=0;
悟迟 2010-08-18
  • 打赏
  • 举报
回复
不懂,为什么不在赋值之前将 Code全部清零,或者在Code结束赋值之后在最后一个字符后面加一个\0

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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