C++本关任务:编写一个函数: char *ReplaceString(char * str, char * s1, char * s2); 该函数用s2替换str中的s1,函数返回替换后的字符串的指针。 题目中已经给出main函数,main函数会调用ReplaceString函数进行测试,依次输入字符串str、s1和s2,最后输出替换后字符串。
时间: 2024-02-28 14:56:46 浏览: 112
好的,我会帮您实现该函数。下面是代码:
```c++
#include <iostream>
#include <cstring>
using namespace std;
char *ReplaceString(char * str, char * s1, char * s2) {
char *result_str = new char[strlen(str) + 1]; // 用于存放替换后的字符串
char *temp_str = str; // 用于遍历原字符串
char *temp_ptr = strstr(temp_str, s1); // 用于记录s1在原字符串中出现的位置
int s1_len = strlen(s1);
int s2_len = strlen(s2);
while (temp_ptr) {
strncat(result_str, temp_str, temp_ptr - temp_str); // 拼接s1之前的字符串
strcat(result_str, s2); // 拼接s2
temp_str = temp_ptr + s1_len; // 移动指针
temp_ptr = strstr(temp_str, s1); // 继续查找s1
}
strcat(result_str, temp_str); // 拼接s1之后的字符串
strcpy(str, result_str); // 将替换后的字符串拷贝回原字符串
delete[] result_str; // 释放内存
return str;
}
int main() {
char str[100];
char s1[100];
char s2[100];
cin.getline(str, 100);
cin.getline(s1, 100);
cin.getline(s2, 100);
ReplaceString(str, s1, s2);
cout << str << endl;
return 0;
}
```
函数的实现过程如下:
1. 首先根据原字符串的长度动态分配一块内存,用于存放替换后的字符串。
2. 然后遍历原字符串,查找s1在其中出现的位置,并将s1之前的字符串拼接到结果字符串中。
3. 将s2拼接到结果字符串中。
4. 移动指针到s1之后的位置,继续查找s1。
5. 重复2-4步,直到在原字符串中找不到s1。
6. 将s1之后的字符串拼接到结果字符串中。
7. 将替换后的字符串拷贝回原字符串。
8. 释放内存,返回原字符串指针。
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)