设串采用静态数组存储结构,编写函数实现串的替换Replace(S,star,T,V),
来源:百度知道 编辑:UC知道 时间:2024/05/05 18:18:55
即要求主串S中,从位置star开始查找是否存在子串。若主串S中存在子串T,怎用子串V替换子串T,且函数返回1;若主串S中不存在子串,则函数返回0.并要求设计出函数进行测试。
请用数据结构(c语言)
请用数据结构(c语言)
#include <stdio.h>
#include <string.h>
Replace(char *S,int start,char *T,char *V)//子串V去替换子串T
{
int i,j,k,l,n,m,s,count=0,signal=0;
n=strlen(T);//求字符串长度
m=strlen(V);
s=strlen(S);
for(i=start-1;S[i]!='\0';i++)//开始查找
{ k=i;
j=0;
while(S[k]==T[j])//与子串T对比
{
k++;
j++;
}
if(T[j]=='\0')//判断是否T存在
{
if(m-n>0)//第一种情况,字符串V比T长的情况下
{
for(l=s+(m-n)*(count+1)-1;l>=k;l--)
S[l]=S[l-m+n];
for(l=k-n,j=0;j<m;l++,j++)
S[l]=V[j];
count++;
}
else if(m-n<0)//第二种情况,字符串V比T短的情况下
{
for(l=k-n,j=0;j<m;l++,j++)
S[l]=V[j];
for(;l<s+(m-n)*(count+1);l++)
S[l]=S[l+n-m];
count++;
}
else//第三种情况,T和V一样长
{
for(l=k-1;l>=k-n;l--,j--)
S[l]=V[j-1];
}
signal=1;
}