这是一个关于编写函数将字符串s中的子字符串s1全部替换为子字符串s2的问题,需要使用C语言进行编写。
时间: 2024-02-06 13:12:36 浏览: 61
好的,我来给你讲一下怎么实现这个功能。
首先,我们可以使用C语言的字符串处理函数strstr()来查找子字符串s1在字符串s中的位置。然后,使用C语言的字符串处理函数strcpy()将s2复制到s中s1的位置。
具体实现代码如下所示:
```c
#include <stdio.h>
#include <string.h>
void replace(char *s, const char *s1, const char *s2) {
char *p;
int len1 = strlen(s1);
int len2 = strlen(s2);
while ((p = strstr(s, s1))) {
char buf[1024];
strcpy(buf, p + len1);
*p = '\0';
strcat(s, s2);
strcat(s, buf);
}
}
int main() {
char s[] = "hello world, world!";
printf("before replace: %s\n", s);
replace(s, "world", "c language");
printf("after replace: %s\n", s);
return 0;
}
```
上述代码中,replace函数的参数分别为:需要替换的字符串s,需要查找的子字符串s1,替换的子字符串s2。该函数通过while循环来查找s中所有的s1,并将其替换为s2。
注意,上述代码中使用了一个临时字符数组buf。这是因为当使用strcpy()将s2复制到s中s1的位置时,如果不使用临时数组,s1后面的字符串会被覆盖掉。
最后,我们在main函数中调用replace函数,并打印替换前和替换后的字符串即可。
阅读全文