编写一个函数,除了字符串前导的星号之外,将串中的其他星号全部删除,用C语言编写,不使用字符串函数
时间: 2024-03-27 22:35:47 浏览: 49
从字符串中删除号.pdf
好的,以下是 C 语言代码实现:
```c
#include <stdio.h>
void remove_stars(char* s) {
if (s == NULL || *s == '\0') {
return;
}
// 找到第一个非*字符的位置
char* p = s;
while (*p == '*') {
p++;
}
// 从第一个非*字符开始遍历,将后面的*号删除
char* q = s;
while (*p != '\0') {
if (*p != '*') {
*q = *p;
p++;
q++;
} else if (p == s || *(p-1) != '*') {
*q = '*';
q++;
p++;
} else {
p++;
}
}
*q = '\0';
}
int main() {
char s1[] = "**hello***world**";
remove_stars(s1);
printf("%s\n", s1); // 输出:*hello*world
char s2[] = "***";
remove_stars(s2);
printf("%s\n", s2); // 输出:""
char s3[] = "abc";
remove_stars(s3);
printf("%s\n", s3); // 输出:abc
return 0;
}
```
这个函数的基本思路和 Python 版本一样:先找到第一个非*字符的位置,然后从这个位置开始遍历整个字符串,将后面的*号删除,并保留连续的*号中的第一个。需要注意的是,C语言中不能直接使用字符串函数,需要使用指针来操作字符串。另外,要注意对空串和空指针的处理,避免程序出现异常情况。
阅读全文