采用顺序存储方式存储串,编写一个指环函数,将串s1中的第i个字符开始的以第J个字符结束的字符构成的子川用s2进行替换,函数名为replace(s1,i,j,s2).例如replace("abcd",1,3,"xyz")返回"xyzd"
strtype *replace(strtype *s1,int i,int j,strtype *s2)
{
if(i<0 ||i>len(s1))
{
cout<<"i不合适"<<endl;
return s1;
}
if(j<i ||j>len(s1))
{
cout<<"j不合适"<<endl;
return s1;
}
int k,t;
if(j-1+1==len(s2))
{
for(k=i-1,t=0;t<len(s2);k++,t++)
{
s1->ch[k]=s2->ch[t];
}
return s1;
}
else if(j-i+1>len(s2))
{
for(k=j;k<=len(s1);k++)
s1->ch[k-(j-i+1-len(s2))]=s1->ch[k];
for(k=i-1,t=0;t<len(s2);k++,t++)
s1->ch[k]=s2->ch[t];
s1->len=s1->len-(j-i+1)+len(s2);
return s1;
}
else if(j-i+1<len(s2))
{
for(k=len(s1)-1;k>=j;k--)
{
s1->ch[k+len(s2)-(j-i+1)]=s1->ch[k];
}
for(k=i-1,t=0;t<len(s2);t++,k++)
{
s1->ch[k]=s2->ch[t];
}
s1->len=s1->len+len(s2)-(j-i+1);
return s1;
}
}