题目描述:
编写函数,实现子串的替换。例如:字符串s=”babcadeabcde”,用串s2=”xy”替换s中的所有子串s1=”abc”,则替换后的串为s=”bxyadexyde”。如果串s中不含有子串s1,则s不变。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char * replace(char *source , char *sub , char *rep)
{
/*pc1指向result结果串,
pc2指向 source串,
pc3指向sub串*/
char *pc1,*pc2,*pc3;
char *result;
result = (char *)malloc(sizeof(char));
pc1=result;
pc2=source;
pc3=sub;
while(*source!=NULL)
{
pc2=source;
pc3=sub;
while(*pc2==*pc3 && *pc2!=NULL && *pc3!=NULL)
{
pc2++;
pc3++;
}
if(*pc3==NULL)
{
pc3=rep;
source=pc2;
while(*pc3!=NULL)
{
//printf("s");
*pc1++=*pc3++;
}
}
else
{
*pc1++=*source++;
}
}
*pc1='\0';
return result;
}
int main()
{
char a[50],b[20],c[20];
printf("请输入主串:\n");
gets(a);
printf("请输入串b:\n");
gets(b);
printf("请输入串c:\n");
gets(c);
char *p=replace(a,b,c);
printf("替换后的串为:\n");
puts(p);
return 0;
}