程序溢出,可是问题在哪呢?
//一个提取国家三级地名的小程序,从个txt文档中提取的。问题处在二维字符串数组那,请高手看看,
CWTProfile m_ini;
m_ini.Load("E:\\ChinaCities.ini");
char * pFileName="E:\\ChinaCities.txt";
CStdioFile myFile;
myFile.Open(pFileName,CFile::modeReadWrite);
CString str,strNum,strValue;
CStringArray strProvinceArray;
CStringArray *subString;
CArray <CStringArray *,CStringArray* > strCity2Array;
//CStringArray strCityArray;
int nNum[3]={0,0,0},index,at1,at2,tag,i,ProvinceId=0;
for(myFile.ReadString(str);str.IsEmpty()!=1;myFile.ReadString(str))
{
nNum[0]=0;
nNum[1]=99;
nNum[2]=99;
for(index=0,i=0,tag=0;;index++)
{
strNum=str.Mid(index,1);
if(strNum>='0'&& strNum<='9')
{
if(tag==1)
{
i--;
nNum[i]=nNum[i]*10+atoi(strNum);
}
nNum[i]=atoi(strNum);
int tempra=nNum[i];
i++;
tag=1;
}
else if (strNum=="_") tag=0;
else
{
strValue=str.Mid(index,str.GetLength()+1-index);
break;
}
}
if(nNum[1]==99&&nNum[2]==99)//省级地名
{
CString strTempra;
str=","+strValue;
for(at1=0,at2=0;;)
{
index=strProvinceArray.Add(new char[50]);
at1=str.Find(",",at1);
at2=str.Find(",",at1+1);
if(at2<=0)
{
strProvinceArray[index]=str.Mid(at1+1,str.GetLength());
strTempra=strProvinceArray[index];
break;
}
strProvinceArray[index]=str.Mid(at1+1,at2-at1-1);
CString strTempra=strProvinceArray[index];
index++;
at1=at2;
}
}
else if(nNum[1]<99&&nNum[2]==99)//市级地名
{
int ttt=strCity2Array.Add(subString);
subString=new CStringArray;
str=","+strValue;
for(at1=0,at2=0;;)
{
//index=subString->Add(new char[30]);
at1=str.Find(",",at1);
at2=str.Find(",",at1+1);
if(at2<=0)
{
//subString->SetAt(index,str.Mid(at1+1,str.GetLength()));
int sss=subString->Add(str.Mid(at1+1,str.GetLength()));
break;
}
//subString->SetAt(index,str.Mid(at1+1,at2-at1-1));
int hhh=subString->Add(str.Mid(at1+1,at2-at1-1));
at1=at2;
}
}
else if(nNum[1]<99&&nNum[2]<99)//县级地名
{
int iss=nNum[1];
int issp=nNum[2];
CString strPro=strProvinceArray[nNum[1]];
CString strCit=((CStringArray *)strCity2Array.GetAt(nNum[1]))->GetAt(nNum[2]);//程序运行这个地方溢出
m_ini.SetText(strPro,strCit,strValue);
m_ini.Save("E://ChinaCities.ini");
}
}
}
//---附部分城市代码
0安徽,北京,福建,甘肃,广东,广西,贵州,海南,河北,河南,黑龙江,湖北,湖南,吉林,江苏,江西,辽宁,内蒙古,宁夏,青海,山东,山西,陕西,上海,四川,天津,西藏,新疆,云南,浙江,重庆
0_0安庆,蚌埠,巢湖,池州,滁州,阜阳,合肥,淮北,淮南,黄山,六安,马鞍山,宿州,铜陵,芜湖,宣城,亳州
0_0_0安庆市,怀宁县,潜山县,宿松县,太湖县,桐城市,望江县,岳西县,枞阳县
0_0_1蚌埠市,固镇县,怀远县,五河县
0_0_2巢湖市,含山县,和县,庐江县,无为县
0_0_3池州市,东至县,青阳县,石台县
0_0_4滁州市,定远县,凤阳县,来安县,明光市,全椒县,天长市
0_0_5阜南县,阜阳市,界首市,临泉县,太和县,颖上县
0_0_6长丰县,肥东县,肥西县
0_0_7淮北市,濉溪县
0_0_8凤台县,淮南市
0_0_9黄山市,祁门县,休宁县,歙县,黟县
0_0_10霍邱县,霍山县,金寨县,六安市,寿县,舒城县
0_0_11当涂县,马鞍山市
0_0_12灵璧县,宿州市,萧县,泗县,砀山县
0_0_13铜陵市,铜陵县
0_0_14繁昌县,南陵县,芜湖市,芜湖县
0_0_15广德县,绩溪县,郎溪县,宁国市,宣城市,泾县,旌德县
0_0_16利辛县,蒙城县,涡阳县,亳州市
0_1北京
0_1_0北京市,密云县,延庆县
0_2福州,龙岩,南平,宁德,莆田,泉州,三明,厦门,漳州
0_2_0长乐市,福清市,福州市,连江县,罗源县,闽侯县,闽清县,平潭县,永泰县
0_2_1长汀县,连城县,龙岩市,上杭县,武平县,永定县,漳平市
0_2_2光泽县,建阳市,建瓯市,南平市,浦城县,邵武市,顺昌县,松溪县,武夷山市,政和县
0_2_3福安市,福鼎市,古田县,宁德市,屏南县,寿宁县,霞浦县,周宁县,柘荣县
0_2_4莆田市,仙游县
0_2_5安溪县,德化县,惠安县,金门县,晋江市,南安市,泉州市,石狮市,永春县
0_2_6大田县,建宁县,将乐县,明溪县,宁化县,清流县,三明市,沙县,泰宁县,永安市,尤溪县
0_2_7厦门市
0_2_8长泰县,东山县,华安县,龙海市,南靖县,平和县,云霄县,漳浦县,漳州市,诏安县
0_3白银,定西,甘南藏族自治州,嘉峪关,金昌,酒泉,兰州,临夏回族自治州,陇南,平凉,庆阳,天水,武威,张掖
0_3_0白银市,会宁县,景泰县,靖远县
0_3_1定西县,临洮县,陇西县,通渭县,渭源县,漳县,岷县
0_3_2迭部县,合作市,临潭县,碌曲县,玛曲县,夏河县,舟曲县,卓尼县
0_3_3嘉峪关市
0_3_4金昌市,永昌县
0_3_5阿克塞哈萨克族自治县,安西县,敦煌市,金塔县,酒泉市,肃北蒙古族自治县,玉门市
0_3_6皋兰县,兰州市,永登县,榆中县
0_3_7东乡族自治县,广河县,和政县,积石山保安族东乡族撒拉族自治县,康乐县,临夏市,临夏县,永靖县
0_3_8成县,徽县,康县,礼县,两当县,文县,武都县,西和县,宕昌县
0_3_9崇信县,华亭县,静宁县,灵台县,平凉市,庄浪县,泾川县
0_3_10合水县,华池县,环县,宁县,庆城县,庆阳市,镇原县,正宁县
0_3_11甘谷县,秦安县,清水县,天水市,武山县,张家川回族自治县
0_3_12古浪县,民勤县,天祝藏族自治县,武威市
0_3_13高台县,临泽县,民乐县,山丹县,肃南裕固族自治县,张掖市