char string[4]={"***"};
CEdit EditRed;
EditRed.Attach(GetDlgItem(IDC_EDIT1)->m_hWnd);
TRACE("first\t%d,%d,%d,%d\n",string[0],string[1],string[2],string[3]);
EditRed.GetWindowText(string,3);
TRACE("second\t%d,%d,%d,%d\n",string[0],string[1],string[2],string[3]);
for(n=0;n<=2;n++){
if(string[n]=='*')
break;
if(string[n]>=48&&string[n]<=57)
Sum=Sum*10+string[n]-48;
else{
MessageBox(_T("输入错误"),_T("错误"));
break;
}想将EDIT控件中的3位以下字符串转化为整数.
调试结果
first,42,42,42,42
second 49,0,42,0然后跳出输入错误的对话框,
再然后就发生异常终止了
请高手指点,不胜感激
CEdit EditRed;
EditRed.Attach(GetDlgItem(IDC_EDIT1)->m_hWnd);
TRACE("first\t%d,%d,%d,%d\n",string[0],string[1],string[2],string[3]);
EditRed.GetWindowText(string,3);
TRACE("second\t%d,%d,%d,%d\n",string[0],string[1],string[2],string[3]);
for(n=0;n<=2;n++){
if(string[n]=='*')
break;
if(string[n]>=48&&string[n]<=57)
Sum=Sum*10+string[n]-48;
else{
MessageBox(_T("输入错误"),_T("错误"));
break;
}想将EDIT控件中的3位以下字符串转化为整数.
调试结果
first,42,42,42,42
second 49,0,42,0然后跳出输入错误的对话框,
再然后就发生异常终止了
请高手指点,不胜感激
你在EDIT下输入了"1",因此string字符数组中内容为49,0,42,0,在你的循环中当n=1时,string[n]为0,于是进入else { ...}块中,显示MessageBox(),一切不都在"你的掌握之中"嘛?!
string[2]不变,仍是上次的42,是因为你使用EditRed.GetWindowText(string,3);这句时,并没有用得了string[2]以及它后面的内存,所以仍保留前次的内容.