题目描述:
编写函数,实现子串的替换。例如:字符串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; }