如下一个函数
CString CToolLibrary::RestoreCode(char *pDesString)
{
int iLength;
char szBuffer[10];
int iAsscValue; char szString[1024];
ZeroMemory(szString,1024); int iPos = 0; while(pDesString)
{
ZeroMemory(szBuffer,10);
iLength = pDesString[0]-'0';
pDesString++;
strncpy(szBuffer,pDesString,iLength);
iAsscValue = atoi(szBuffer);
szString[iPos] = iAsscValue;
iPos++;
for (int i=0; i< iLength; i++)
{
pDesString++;
}
AfxMessageBox(szString);//这里可以显示程序一切运行都正常,szString的值也都是正确的
}
AfxMessageBox(szString);//这一句却得不到执行!整个程序也就在这里退出了。莫名其妙,没有提示任何错误,程序就无声无息地退出了,我要晕了 CString szResult = szString;
return szResult;
}
CString CToolLibrary::RestoreCode(char *pDesString)
{
int iLength;
char szBuffer[10];
int iAsscValue; char szString[1024];
ZeroMemory(szString,1024); int iPos = 0; while(pDesString)
{
ZeroMemory(szBuffer,10);
iLength = pDesString[0]-'0';
pDesString++;
strncpy(szBuffer,pDesString,iLength);
iAsscValue = atoi(szBuffer);
szString[iPos] = iAsscValue;
iPos++;
for (int i=0; i< iLength; i++)
{
pDesString++;
}
AfxMessageBox(szString);//这里可以显示程序一切运行都正常,szString的值也都是正确的
}
AfxMessageBox(szString);//这一句却得不到执行!整个程序也就在这里退出了。莫名其妙,没有提示任何错误,程序就无声无息地退出了,我要晕了 CString szResult = szString;
return szResult;
}
CString CToolLibrary::RestoreCode(char *pDesString)
{ CString szResult = "szString";
return szResult;
}然后整个程序都正常了
没有再莫名其妙地退出。
循环的判断条件是while(pDesString)而下面指针的移动
pDesString++;这样其实指针即使移动到pDesString尾部也不会满足while(pDesString)
因为指针可以一直指下去
FAINT
你再查一下。
你的代码不全,我并不能确定。
问题已经解决了
原因我在上面说了下面是我改正后的代码CString CToolLibrary::RestoreCode(char *pDesString)
{
int iLength;
char szBuffer[10];
int iAsscValue; char szString[1024];
ZeroMemory(szString,1024); int iPos = 0; int iStrLen = strlen(pDesString);
int iPostion=0; while(iPostion < iStrLen)
{
ZeroMemory(szBuffer,10);
iLength = pDesString[0]-'0';
pDesString++;
iPostion++;
strncpy(szBuffer,pDesString,iLength);
iAsscValue = atoi(szBuffer);
szString[iPos] = iAsscValue;
iPos++;
for (int i=0; i< iLength; i++)
{
pDesString++;
iPostion++;
}
} CString szResult = szString;
return szResult;
}