c++编写函数 void fun(char *a),该函数实现的功能是:将字符串a 中除前导和尾部连续的*之外,其余的*全部删除。例如字符串: ***a*b**,处理后为: ***ab**。在 main函数中,从键盘输入带*且无空格的字符串,调用 fun 函数处理字符串,并将处理后的字符串输出到屏幕上。说明:不得使用系统提供的字符串函数。
时间: 2023-07-23 13:21:05 浏览: 97
好的,这是一个比较简单的字符串处理问题,可以按照以下步骤来实现:
1. 首先找到字符串中第一个非*字符的位置,用指针指向它。
2. 然后从字符串的末尾开始,找到第一个非*字符的位置,将其后面的字符全部替换为'\0'。
3. 最后遍历整个字符串,将非*字符依次复制到字符串的开头,即指针所指位置,同时将指针向后移动。
4. 最后,将指针所指位置的字符设置为'\0',即可得到处理后的字符串。
下面是代码实现:
```c++
#include <iostream>
using namespace std;
void fun(char *a)
{
char *p = a;
while (*p == '*') // 找到第一个非 * 字符的位置
p++;
char *q = p + strlen(p) - 1;
while (*q == '*') // 找到最后一个非 * 字符的位置
q--;
*(q + 1) = '\0'; // 将最后一个非 * 字符后面的字符全部替换为 '\0'
char *r = a;
while (p <= q) // 复制非 * 字符到 a 的开头
{
if (*p != '*')
{
*r = *p;
r++;
}
p++;
}
*r = '\0'; // 在最后一个非 * 字符后面添加 '\0'
}
int main()
{
char a[100];
cout << "请输入带 * 的字符串:" << endl;
cin >> a;
fun(a);
cout << "处理后的字符串为:" << endl;
cout << a << endl;
return 0;
}
```
示例输出:
```
请输入带 * 的字符串:
***a*b**
处理后的字符串为:
***ab**
```
阅读全文