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

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);

蛊毒传说
浏览 97回答 2
2回答

芜湖不芜

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

慕斯王

SetWindowText(hEdit2,&result);这个不能直接给一个整数地址的吧,你把需要的字符串,通过参数代出来,然后直接调用此函数显示就可以了。
打开App,查看更多内容
随时随地看视频慕课网APP