7、假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是: 除了字符串前导和尾部的*号之外,将串中其它*号全部删除。形参h已指向字符串中第一个字母,形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。 例如,字符串中的内容为:****A*BC*DEF*G********,删除后,字符串中的内容应当是:****ABCDEFG********。在编写函数时,不得使用C语言提供的字符串函数。
时间: 2023-07-23 09:31:32 浏览: 111
除了尾部的*号之外,将字符串中其它*号全部删除。
5星 · 资源好评率100%
下面是一个可能的 C 语言实现:
```c
void fun(char* h, char* p) {
// 跳过前导的 * 号
while (*h == '*') h++;
// 找到倒数第一个非 * 号
while (p > h && *p == '*') p--;
// 删除其余的 * 号
char* q = h + 1; // q 指向当前处理的字符
while (q <= p) {
if (*q == '*') {
// 如果当前字符是 * 号,则将后面的字符向前移动一位
char* r = q + 1;
while (r <= p && *r == '*') r++;
if (r <= p) *q = *r;
}
q++;
}
// 在最后一个非 * 号后面添加 * 号
*(p + 1) = '*';
*(p + 2) = '\0';
}
```
函数首先跳过字符串前导的 * 号,然后找到倒数第一个非 * 号。接着,它从左到右遍历字符串,将所有的 * 号删除,即将后面的字符向前移动一位,直到遇到字符串尾部或最后一个非 * 号。最后,在最后一个非 * 号后面添加一个 * 号,以保证字符串的结尾也是 * 号。
阅读全文