假定输入的字符串中只包含字母和号。请编写函数fun(),它的功能是:除了字符串前导的×之外,将字符串中其他×号全部删除。在编写函数时,不得使用C语言提供的字符串函数。例如,若字符串中的内容为****A*BC*DEF*G******,删除后,字符串中的内容则应当是****ABCDEFG。
时间: 2023-07-23 20:20:53 浏览: 166
好的,这是一个比较简单的字符串处理问题,可以按照以下步骤实现:
1. 首先判断字符串中前导的 * 号的个数,记录下来;
2. 然后从前往后遍历字符串,遇到 * 号就将其删除;
3. 遍历完成后,在字符串前面加上前导的 * 号。
下面是实现该功能的代码:
```c
#include <stdio.h>
void fun(char *str) {
int len = 0;
while (str[len] != '\0') {
len++;
}
int prefix = 0;
while (str[prefix] == '*') {
prefix++;
}
int i, j;
for (i = prefix, j = prefix; i < len; i++) {
if (str[i] != '*') {
str[j] = str[i];
j++;
}
}
str[j] = '\0';
for (i = 0; i < prefix; i++) {
printf("*");
}
printf("%s", str + prefix);
}
int main() {
char str[] = "****A*BC*DEF*G******";
fun(str);
return 0;
}
```
输出结果为:
```
****ABCDEFG
```
函数 fun() 的参数为一个指向字符串的指针,可以在 main() 函数中调用该函数,将需要处理的字符串作为参数传入。这段代码中,我们使用了两个指针 i 和 j,分别指向原字符串和处理后的字符串中当前需要处理的字符位置。同时,我们也避免使用了 C 语言提供的字符串函数,实现了函数功能。
阅读全文