编写一个函数: char *ReplaceString(char * str, char * s1, char * s2); 该函数用s2替换str中的s1,函数返回替换后的字符串的指针。 题目中已经给出main函数,main函数会调用ReplaceString函数进行测试,依次输入字符串str、s1和s2,最后输出替换后字符串
时间: 2024-03-10 18:48:23 浏览: 122
下面是一个可能的实现:
```cpp
#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 = str;
while ((p = strstr(p, s1)) != NULL)
{
int rest_len = strlen(p + len1);
memmove(p + len2, p + len1, rest_len + 1);
memcpy(p, s2, len2);
p += len2;
}
return str;
}
int main()
{
char str[100], s1[100], s2[100];
cout << "请输入字符串:";
cin.getline(str, 100);
cout << "请输入要替换的子串:";
cin.getline(s1, 100);
cout << "请输入替换后的子串:";
cin.getline(s2, 100);
cout << ReplaceString(str, s1, s2) << endl;
return 0;
}
```
在这个实现中,我们使用了 C++ 的字符串处理函数来实现替换。首先,我们计算出要替换的子串和替换后的子串的长度,然后遍历字符串,每次查找要替换的子串的位置,如果找到了就用 memmove() 函数将其后面的字符向后移动 len2 - len1 个位置,然后使用 memcpy() 函数将替换后的子串复制到要替换的子串的位置上。最后返回原字符串的指针。注意,这里使用了 memmove() 函数而不是 memcpy() 函数是因为它可以处理源字符串和目标字符串重叠的情况。
阅读全文