/*用s2串替换s中的s1串*/
void replace(TCHAR *s,TCHAR *s1,TCHAR *s2)
{
int nLen=lstrlen(s);
int nLen1=lstrlen(s1);
int nLen2=lstrlen(s2);
for(int i=0;i<nLen-nLen1+1;i++)
{
bool bSame=true;
for(int j=0;j<nLen1;j++)
{
if(s[i+j]!=s1[j])
{
bSame=false;
break;
}
}
if(!bSame)
{
continue;
}
//i+nLen1是原来的字符串的后面部分开始
if(nLen1>nLen2)
{
//替换后字符串变短nLen1-nLen2
for(int k=0;k<nLen2;k++)
{
s[i+k]=s2[k];
}
for(int l=i+nLen2;l<nLen+nLen2-nLen1;l++)
{
s[l]=s[l+nLen1-nLen2];
}
for(int m=nLen+nLen2-nLen1;m<nLen;m++)
{
s[m]=’\0′;
}
nLen=lstrlen(s);
i=i+nLen2;
}
else if(nLen2>nLen1)
{
//替换后字符串变长了nLen2-nLen1
//先将替换时占用到的位置整体后移
for(int l=nLen+nLen2-nLen1;l>=i+nLen2;l–)
{
s[l]=s[l+nLen1-nLen2];
}
for(int k=0;k<nLen2;k++)
{
s[i+k]=s2[k];
}
nLen=lstrlen(s);
i=i+nLen2;
}
}
}


杭州格原