大家帮小弟我看一个小异常,小弟我是新手(急用的。拜托大家了)

大家帮我看一个小错误,我是新手(急用的。。。拜托大家了)
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]也会越界访问。