假定输入的字符串中只包含字母和*号。请编写函数 fun,它的功能是制除字符串中所有的*号。在编写函数时,不得使用C语言提供的字符串函数。例如,字符串中的内容为:****A*BC*DEF*G*******删除后,字符串中的内容应当是:ABCDEFG。
时间: 2024-09-04 19:04:53 浏览: 51
下面是一个C语言函数的实现,它会删除输入字符串中所有的星号(*)字符,且不使用任何标准库的字符串处理函数:
```c
#include <stdio.h>
void fun(char *str) {
int i, j;
// i用于遍历原始字符串,j用于记录不包含*的字符位置
for (i = 0, j = 0; str[i] != '\0'; ++i) {
if (str[i] != '*') {
// 将不包含*的字符移动到当前位置
str[j++] = str[i];
}
}
// 将字符串的终止符放在最后
str[j] = '\0';
}
int main() {
char str[] = "****A*BC*DEF*G*******";
printf("原始字符串: %s\n", str);
fun(str);
printf("删除*后: %s\n", str);
return 0;
}
```
解释:
- 我们定义了一个名为 `fun` 的函数,它接受一个指向字符数组(字符串)的指针 `str`。
- 使用两个指针 `i` 和 `j` 来遍历字符串。其中 `i` 用于遍历整个字符串,而 `j` 用于记录下一个不包含星号的字符应该放置的位置。
- 在遍历字符串的过程中,如果当前字符不是星号,我们就将其移动到 `j` 指向的位置,并且 `j` 递增。
- 如果当前字符是星号,我们不采取任何操作,继续遍历。
- 字符串遍历完成后,我们在 `j` 指向的位置放置字符串的终止符 `\0`,以确保字符串正确结束。
- 在 `main` 函数中,我们定义了一个测试字符串,并在调用 `fun` 函数前后打印字符串内容,以展示功能结果。