译码按钮无响应,该按钮代码如下:
void CHuffman33Dlg::OnButtonDecode()不知该如何解决,求大神们帮忙,谢谢!!
{
// TODO: Add your control notification handler code here
CString codeStr,str,strTemp,strTemp2;
CString decodeStr="";
GetDlgItemText(IDC_EDIT_INPUT,codeStr);
/*if (codeStr=="")
{
GetDlgItemText(IDC_EDIT_DECODEREC,codeStr);
}*/
str=codeStr;
int n=num;//叶子节点个数
int i=0,j=0;
int minLC=m_zifu.GetItemText(0,3).GetLength(),maxLC=0;//最短和最长哈夫曼编码
int len=0;
for (i=0;i<n;i++)
{
len=m_zifu.GetItemText(i,3).GetLength();
minLC=minLC<=len?minLC:len;
maxLC=maxLC>=len?maxLC:len;
}
while(str!="")
{
for (i=minLC;i<=maxLC;i++)
{
strTemp=str.Left(i);
j=0;
strTemp2=m_zifu.GetItemText(j,3);
while(strTemp!=strTemp2&&j<n)
{
j++;
strTemp2=m_zifu.GetItemText(j,3);
}
if (strTemp==m_zifu.GetItemText(j,3)&&j<n)
{
str=str.Right(str.GetLength()-i);
decodeStr+=m_zifu.GetItemText(j,0);
}
}
}
SetDlgItemText(IDC_EDIT_DECODE,decodeStr);
}
6 个解决方案
#1
一定是while死循环了,跟踪调试一下
#2
或者是 for 死循环了
#3
我估计str一直不为空,所以退不出来。
#4
在这个函数的开头就设置个断点,然后进去了按F10单步跟,然后看看是哪步出问题了
#5
的确是while那里死循环了,但是没改好
#6
一眼望去,str没机会为空
#1
一定是while死循环了,跟踪调试一下
#2
或者是 for 死循环了
#3
我估计str一直不为空,所以退不出来。
#4
在这个函数的开头就设置个断点,然后进去了按F10单步跟,然后看看是哪步出问题了
#5
的确是while那里死循环了,但是没改好
#6
一眼望去,str没机会为空