任务描述 本关任务:编写一个函数: char *ReplaceString(char * str, char * s1, char * s2); 该函数用s2替换str中的s1,函数返回替换后的字符串的指针。 题目中已经给出main函数,main函数会调用ReplaceString函数进行测试,依次输入字符串str、s1和s2,最后输出替换后字符串。
时间: 2024-02-25 09:59:37 浏览: 87
以下是函数的代码实现:
```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 *p1 = str;
char *p2 = str;
char *p3 = str;
while ((p2 = strstr(p1, s1)) != NULL)
{
p3 = p2 + len1;
if (len2 > len1)
{
memmove(p3 + len2 - len1, p3, strlen(p3) + 1);
}
else if (len2 < len1)
{
memmove(p3 + len2 - len1, p3, strlen(p3) + 1);
}
memcpy(p2, s2, len2);
p1 = p2 + len2;
}
return str;
}
int main()
{
char str[100], s1[10], s2[10];
cin >> str >> s1 >> s2;
cout << ReplaceString(str, s1, s2) << endl;
return 0;
}
```
该函数使用了 C++ 标准库中的函数,如 strlen、strstr、memmove、memcpy 等,这些函数都是非常常用的字符串处理函数。函数的实现过程中,先使用 strstr 函数查找 s1 在 str 中的位置,如果找到了就用 s2 替换 s1,否则返回原字符串。注意,这里使用了指针进行操作,需要注意指针的移动和内存的复制等问题。
阅读全文