假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是: 除了字符串前导和尾部的*号之外,将串中其它*号全部删除。形参h已指向字符串中第一个字母,形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。 例如,字符串中的内容为:****A*BC*DEF*G********,删除后,字符串中的内容应当是:****ABCDEFG********。在编写函数时,不得使用C语言提供的字符串函数。
时间: 2023-07-23 21:20:51 浏览: 77
除了尾部的*号之外,将字符串中其它*号全部删除。
5星 · 资源好评率100%
好的,这是一个比较简单的字符串处理题目。我们可以使用两个指针,一个指向字符串的头部,一个指向字符串的尾部,然后分别向中间移动指针,遇到*号就跳过,遇到字母就将其复制到前面的位置。具体实现可以参考下面的代码:
```c
void fun(char *h, char *p) {
char *src = h;
char *dst = h;
while (*src == '*') { // 跳过开头的*
src++;
}
while (p > src && *p == '*') { // 跳过结尾的*
p--;
}
while (src <= p) { // 复制非*号的字符
if (*src != '*') {
*dst = *src;
dst++;
}
src++;
}
while (dst <= p) { // 将剩余的位置填充*
*dst = '*';
dst++;
}
}
```
这个函数的思路比较简单,首先跳过字符串头部和尾部的*号,然后将指针src从头部向尾部移动,遇到非*号的字符就复制到指针dst所指的位置。最后,将剩余的位置填充*号即可。
阅读全文