用C++编写函数void fun(char *a),该函数实现的功能是:将字符串a中除前导和尾部连续的*之外,其余的*全部删除。
时间: 2024-02-27 14:58:37 浏览: 77
C语言程序设计-编写函数fun(str,i,n),从字符串str中删除第i个字符开始的连续n个字符
5星 · 资源好评率100%
以下是函数的实现代码:
```
void fun(char* a)
{
int start = 0, end = strlen(a) - 1;
// 找到第一个不是 * 的字符位置
while (a[start] == '*')
{
start++;
}
// 找到最后一个不是 * 的字符位置
while (a[end] == '*')
{
end--;
}
// 将中间的 * 全部删除
for (int i = start + 1; i < end; i++)
{
if (a[i] == '*')
{
// 将后面的字符往前移
for (int j = i; j <= end; j++)
{
a[j] = a[j + 1];
}
i--; // 因为删除了一个字符,需要重新判断当前位置
end--; // 字符串长度减少了 1
}
}
}
```
函数的参数是一个字符指针,即一个字符串的首地址。函数使用了三个指针变量 start、end 和 i,分别表示字符串中除前导和尾部连续的 * 之外的第一个字符位置、最后一个字符位置和当前处理的字符位置。
首先,使用两个 while 循环找到第一个不是 * 的字符位置和最后一个不是 * 的字符位置。然后,使用一个 for 循环遍历字符串中除前导和尾部连续的 * 之外的所有字符,判断当前字符是否是 *,如果是,则将后面的字符往前移动一位,直到字符串中的所有 * 都被删除。最后,函数就实现了将字符串 a 中除前导和尾部连续的 * 之外,其余的 * 全部删除的功能。
阅读全文