c语言求助:将字符串s中的子字符串s1全部替换为子字符串s2.用指针实现

,打扰一下,c语言求助:将字符串s中的子字符串s1全部替换为子字符串s2.用指针实现
最新回答
魔謉★鱼丨

2025-03-02 01:49:58

#include<stdio.h>
#include<string.h>

#define MAXLENGTH 100

void replace(char *s, char *s1, char *s2)
{
int len1 = strlen(s), len2=strlen(s1), len3 = strlen(s2);
char buf[MAXLENGTH]; //保存替换后的字符串
int i, j, k, l;
for(i=0, k=0; i<len1-len2+1;) {

for(j=0; j<len2; j++) {
if(*(s+i+j) != *(s1+j)) break;
}
if(j == len2) {
l = 0;
while(l<len3) *(buf+k++) = *(s2+l++);
i += len2;
continue;
} else {
*(buf+k++) = *(s+i++);
}
}
while(i<len1) *(buf+k++) = *(s+i++);
*(buf+k) = '\0';
strcpy(s, buf); //将替换后的串复制给s.
}

int main()
{
char str[MAXLENGTH] = {NULL};
char str1[MAXLENGTH] = {NULL};
char str2[MAXLENGTH] = {NULL};

printf("请输入字符串s: \n");
gets(str);
fflush(stdin);
printf("请输入字符串s1: \n");
gets(str1);
fflush(stdin);
printf("请输入字符串s2: \n");
gets(str2);
replace(str, str1, str2);

printf("替换后的字符串: %s\n", str);

return 0;
}