除了尾部的*号之外,将字符串中其他*号全部删除c语言,假定输入的字符串中只包含字母和*号。请编写函数 fun(),它的功能是:除了尾部的,:号之外,将字符串_考题宝...
时间: 2023-12-05 18:04:43 浏览: 174
下面是解题思路和代码实现:
解题思路:
1. 找到字符串尾部的冒号,记为end
2. 从字符串末尾开始往前遍历,将所有连续的*号替换为一个*号,直到遇到第一个非*号字符,记为start
3. 将从start到end的字符串复制到原字符串的开头,并在末尾加上冒号
4. 将整个字符串末尾多余的部分(不包括冒号)全部替换为*号
代码实现:
```c
void fun(char *str)
{
int len = strlen(str);
int end = len - 1;
while (end >= 0 && str[end] != ':') {
end--;
}
int i = len - 1;
int j = i;
while (i >= 0 && j > end) {
if (str[i] == '*') {
while (i >= 0 && str[i] == '*') {
i--;
}
str[j--] = '*';
} else {
str[j--] = str[i--];
}
}
int k;
for (k = end + 1; k < len; k++) {
str[k - end - 1] = str[k];
}
str[len - end - 1] = ':';
for (i = 0; i < len - end - 2; i++) {
str[end + 1 + i] = '*';
}
}
```
注意事项:
1. 函数中传入的字符串必须是数组形式,不能是指针形式
2. 函数中修改的是原始字符串,不需要返回任何值
3. 需要包含头文件`#include <string.h>`用于使用字符串函数
阅读全文