c++编写一个函数: char *ReplaceString(char * str, char * s1, char * s2); 该函数用s2替换str中的s1,函数返回替换后的字符串的指针。
时间: 2023-08-07 09:04:03 浏览: 121
C++string中的assign()、erase()、swap()函数
以下是实现该函数的代码:
```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);
if(p == NULL){ // 如果找不到s1,则直接返回原字符串
return str;
}
int len = strlen(str) - len1 + len2;
char *newStr = new char[len+1];
memset(newStr, 0, len+1);
strncpy(newStr, str, p-str); // 复制s1前面的字符串
strcat(newStr, s2); // 连接s2
strcat(newStr, p+len1); // 连接s1后面的字符串
return newStr;
}
int main(){
char str[] = "Hello, world!";
char s1[] = "world";
char s2[] = "C++";
char *newStr = ReplaceString(str, s1, s2);
cout << newStr << endl;
delete[] newStr;
return 0;
}
```
该函数使用了 strstr 函数来查找 s1 是否在 str 中出现,如果找到了,则使用 strncpy、strcat 等函数来构造新的字符串,并返回新字符串的指针。如果找不到 s1,则直接返回原字符串。注意,该函数返回的新字符串是在堆上动态分配的,使用完后需要手动释放。
阅读全文