高手帮忙看一下那不合理
第一次运行没错
第二次运行内存某地址不能为writen以下是部分代码:void main(int argc,char* argv[])
{int i,j,k,l,length,nbackslash;
long int posn;
char buffer[400000],chrtmp1[100];
deque<string>::iterator is,je;
string tmpstr1,tmpstr2,tmpstr3,linkregex,lstfilei,lstfilej;
string dirend,rootdir,tmpstr4;
string::iterator itri,itrj;char tmpdir[256],tmp2[700];
ifstream infff;
ofstream outfff;
    ostringstream ostring; 
    ostream_iterator<char> oi(ostring); 
while(true)
{cout<<"input the root directory:"<<endl;
cin>>tmpdir;if(strcmp(tmpdir,"exit")==0)exit(0);
rootdir=tmpdir;
cout<<"input the file filter:"<<endl;
cin>>tmp2;if(strcmp(tmpdir,"exit")==0)exit(0);filefilter_regex.assign(tmp2);
cout<<"input the content filter:"<<endl;
cin>>tmp2;if(strcmp(tmpdir,"exit")==0)exit(0);filecttfilter_regex.assign(tmp2);
if(!regex_match(tmpdir,rootdir_regex))continue;
cout<<"start find all file:"<<endl;
dir2lst(tmpdir);
cout<<"start read all file:"<<endl;
for(i=0;i<lstfile.size();i++)
{   inf.clear();
if(regex_match(lstfile[i].c_str(),filefilter_regex))
{inf.open(lstfile[i].c_str(),ios::ate|ios::in);
length = infff.tellg();
   inf.seekg(0,std::ios::beg);
   inf.read(buffer,length);
lstfilectt.push_front(buffer);
   inf.close();
  fprintf(stdout,"Current %ld/%ld\r",i,lstfile.size());   
   fflush(stdout);
   }else{lstfilectt.push_front("\0");}
}
cout<<endl;
cout<<"start relink all file:"<<endl;
for(i=0;i<lstfile.size();i++)
{
dirend=lstfile[i].substr(std::strlen(rootdir.c_str()));
remove(dirend.begin(),dirend.end(),'\\');
for(j=0;j<lstfilectt.size();j++)
{if(j==i)continue;
set_difference(lstfile[i].begin(),lstfile[i].end(),lstfile[j].begin(),lstfile[j].end(),tmpstr4.begin());
posn=lstfile[j].length()-tmpstr4.length();
posn=lstfile[j].rfind("/",posn);
lstfilej=lstfile[j].substr(posn);
lstfilei=lstfile[i].substr(posn);
nbackslash=count(lstfilej.begin(),lstfilej.end(),'\\');
itoa(nbackslash,chrtmp1,10);
lstfilei="}"+lstfilei;
lstfilei=chrtmp1+lstfilei;
lstfilei="href=\"(../){"+lstfilei;dirend="href=\""+dirend;
filecttfilter_regex=lstfilei;
regex_replace(oi,lstfilectt[j].begin(),lstfilectt[j].end(),filecttfilter_regex,dirend);
lstfilectt[j]=ostring.str();
    fprintf(stdout,"Current %ld/%ld  %ld/%ld\r",i,lstfile.size(),j,lstfilectt.size());
     fflush(stdout);
}
lstfilenew.push_front(rootdir+dirend);
}
cout<<"start save all file"<<endl;
for(i=0;i<lstfile.size();i++)
{outfff.open(lstfilenew[i].c_str(),ios::out|ios::trunc);
  outf.write(lstfilectt[i].c_str(),std::strlen(lstfilectt[i].c_str()));
  outf.close();
    fprintf(stdout,"Current %ld/%ld\r",i,lstfile.size());   
     fflush(stdout);
}
}
}