为了账号安全,请及时绑定邮箱和手机立即绑定

我的目的是将函数的返回结果显示在EDIT2控件上,当运行时程序会卡死

我的目的是将函数的返回结果显示在EDIT2控件上,当运行时程序会卡死

蛊毒传说 2023-03-05 18:14:00
long OutStack() //////////输出栈{int i;char e_num[100];char temp[100]; //定义字符型变量储存输出的八进制数long result;if(p.top==0)return 0;else{  for(i=p.top;i>0;i--)  {e_num[i]=p.elem[i]+0x30; //将出栈的每个数字加0x30(0),转换成字符型strcat(temp,&e_num[i]); //将出栈的每个数字进行拼接,赋值给temp}}result=atol(temp);return (result);}下面是对这个函数的调用char result=(char)OutStack();HWND hEdit2=GetDlgItem(hwndDlg,IDC_EDIT2);SetWindowText(hEdit2,&result);
查看完整描述

2 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

strcat(temp,&e_num[i]);  
strcat 是对两个字符串进行拼接。
字符串以 '\0'结尾。
temp 一开始就没有赋初值,所以里面可能没有 '\0' 字符串没有尾,函数会顺着一直找下去,找到'\0' 做它的结尾处地址。
&e_num[i]这样也不行,e_num[i]这也只是个字符,它后面一个地址里e_num[i+1]并不是'\0',所以它也一样没有结尾。

查看完整回答
反对 回复 2023-03-08
?
慕斯王

TA贡献1864条经验 获得超2个赞

SetWindowText(hEdit2,&result);
这个不能直接给一个整数地址的吧,你把需要的字符串,通过参数代出来,然后直接调用此函数显示就可以了。

查看完整回答
反对 回复 2023-03-08
  • 2 回答
  • 0 关注
  • 94 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信