c++编写函数 void fun(char *a),该函数实现的功能是:将字符串a 中除前导和尾部连续的*之外,其余的*全部删除。例如字符串: ***a*b**,处理后为: ***ab**。在 main函数中,从键盘输入带*且无空格的字符串,调用 fun 函数处理字符串,并将处理后的字符串输出到屏幕上。说明:不得使用系统提供的字符串函数。
时间: 2023-08-22 10:09:21 浏览: 134
解析C++中的字符串处理函数和指针
5星 · 资源好评率100%
好的,我可以帮你解答这个问题。下面是实现该功能的函数 fun 的代码:
```c++
void fun(char *a) {
// 去掉前导的 *
while (*a == '*') {
a++;
}
// 去掉尾部的 *
char *end = a + strlen(a) - 1;
while (*end == '*' && end > a) {
end--;
}
*(end + 1) = '\0';
// 去掉中间的 *
char *p = a;
while (*p != '\0') {
if (*p == '*') {
if (*(p + 1) == '*' || *(p - 1) == '*') {
// 保留连续的 *
p++;
} else {
// 删除单个 *
char *q = p;
while (*q != '\0') {
*q = *(q + 1);
q++;
}
}
} else {
p++;
}
}
}
```
该函数的主要思路是:先去掉前导和尾部的 *,然后遍历中间的字符,遇到单个*就删除,遇到连续的*就保留。接下来是 main 函数的代码:
```c++
#include <iostream>
#include <cstring>
using namespace std;
void fun(char *a);
int main() {
char a[100];
cin >> a;
fun(a);
cout << a << endl;
return 0;
}
```
在 main 函数中,先从键盘输入字符串,然后调用函数 fun 处理字符串,并将处理后的字符串输出到屏幕上。注意,输入的字符串长度不能超过 99 个字符。
阅读全文