c++编写一个函数: char *ReplaceString(char * str, char * s1, char * s2); 该函数用s2替换str中的s1,函数返回替换后的字符串的指针。测试输入:abcxxdexxf xx ooo 预期输出:abcooodeooof
时间: 2023-08-07 19:04:03 浏览: 153
c++字符类型之间的转换
以下是实现ReplaceString函数的代码:
```c++
#include <iostream>
#include <cstring>
using namespace std;
char* ReplaceString(char* str, char* s1, char* s2) {
int len1 = strlen(s1);
int len2 = strlen(s2);
char* p = strstr(str, s1);
while (p != NULL) {
if (len2 > len1) {
memmove(p + len2, p + len1, strlen(p + len1) + 1);
}
memcpy(p, s2, len2);
p = strstr(p + len2, s1);
}
return str;
}
int main() {
char str[] = "abcxxdexxf xx ooo";
char s1[] = "xx";
char s2[] = "ooo";
char* result = ReplaceString(str, s1, s2);
cout << result << endl; // 输出 abcooodeooof
return 0;
}
```
该函数使用了C++中的字符串处理函数strstr、memcpy和memmove。其中,strstr函数用于查找字符串str中第一次出现子串s1的位置;memcpy函数用于将s2的内容复制到p所指向的位置;memmove函数用于将p+len1之后的内容向后移动len2-len1个位置,然后用s2替换p指向的位置。最后,函数返回替换后的字符串的指针。
阅读全文