本题要求实现一个函数,对给定的一个字符串和两个字符,打印出给定字符串中从与第一个字符匹配的位置开始到与第二个字符匹配的位置之间的所有字符。 函数接口定义: char *match( char *s, char ch1, char ch2 );
时间: 2024-05-01 15:20:20 浏览: 75
以下是C++的实现代码:
```cpp
#include <iostream>
using namespace std;
char* match(char* s, char ch1, char ch2) {
char* result = new char[strlen(s) + 1];
int index = 0;
bool start = false;
for (int i = 0; i < strlen(s); i++) {
if (s[i] == ch1) {
start = true;
}
if (start) {
result[index++] = s[i];
}
if (s[i] == ch2) {
break;
}
}
result[index] = '\0';
return result;
}
int main() {
char s[] = "Hello World!";
char ch1 = 'l';
char ch2 = 'r';
char* result = match(s, ch1, ch2);
cout << result << endl;
delete[] result;
return 0;
}
```
函数的思路如下:
1. 先创建一个与原字符串长度相同的新字符串,用于存储匹配的结果;
2. 定义一个布尔变量start,表示是否开始匹配。初始化为false;
3. 遍历原字符串,如果遇到第一个字符ch1,就将start设置为true;
4. 如果start为true,就将当前字符加入到结果字符串中;
5. 如果遇到第二个字符ch2,就退出循环;
6. 最后在结果字符串的末尾添加一个字符串结束符'\0';
7. 返回结果字符串。需要注意,返回的结果字符串是在堆上动态分配的,需要在使用后手动释放。
测试用例输出:
```
llo Wo
```
阅读全文