大家帮小弟我看一个小异常,小弟我是新手(急用的。拜托大家了)
大家帮我看一个小错误,我是新手(急用的。。。拜托大家了)
CString code[16]={ "ad ", "eh ", "im ", "np ", "ru ", "vy ", "zc ", "gk ",
"pt ", "xb ", "fj ", "ox ", "wa ", "ei ", "nr ", "qu "};
CString reg,stred;
int num;
GetDlgItem(IDC_EDIT1)-> GetWindowText(stred);
stred.MakeLower();
for(int i=0;i <8;i++)
{
char p=stred.GetAt(i);
if(p> = '0 '&&p <= '9 ')
num=p- '0 ';
else if(p> = 'a '&&p <= 'm ')
num=p- 'a ';
else
num=p- 'n ';
CString tmp=code[num];
reg+=tmp;
}
reg.MakeUpper();
GetDlgItem(IDC_EDIT1)-> SetWindowText(reg.Mid(0,7));
------解决方案--------------------
报什么错?
具体是什么问题?
------解决方案--------------------
int i=0;i <8;i++
你能确定你的stred长度一定是大于或等于8?如果不能,下面的GetAt就会越界访问……
------解决方案--------------------
而且如果stred里面有即不是字母也不是数字的字符,那么num就会是未初始化的值,code[num]也会越界访问。
CString code[16]={ "ad ", "eh ", "im ", "np ", "ru ", "vy ", "zc ", "gk ",
"pt ", "xb ", "fj ", "ox ", "wa ", "ei ", "nr ", "qu "};
CString reg,stred;
int num;
GetDlgItem(IDC_EDIT1)-> GetWindowText(stred);
stred.MakeLower();
for(int i=0;i <8;i++)
{
char p=stred.GetAt(i);
if(p> = '0 '&&p <= '9 ')
num=p- '0 ';
else if(p> = 'a '&&p <= 'm ')
num=p- 'a ';
else
num=p- 'n ';
CString tmp=code[num];
reg+=tmp;
}
reg.MakeUpper();
GetDlgItem(IDC_EDIT1)-> SetWindowText(reg.Mid(0,7));
------解决方案--------------------
报什么错?
具体是什么问题?
------解决方案--------------------
int i=0;i <8;i++
你能确定你的stred长度一定是大于或等于8?如果不能,下面的GetAt就会越界访问……
------解决方案--------------------
而且如果stred里面有即不是字母也不是数字的字符,那么num就会是未初始化的值,code[num]也会越界访问。