C语言编写程序去除字符串中的星号
时间: 2023-10-16 07:08:13 浏览: 119
好的,您可以使用C语言中的字符数组和循环来去除字符串中的星号,示例代码如下:
```c
#include <stdio.h>
#include <string.h>
int main() {
char string[] = "****A*BC*DEF*G*******";
int len = strlen(string);
int i, j;
for (i = 0, j = 0; i < len; i++) {
if (string[i] != '*') {
string[j++] = string[i];
}
}
string[j] = '\0';
printf("%s\n", string);
return 0;
}
```
输出结果为:
```
ABCDEFG
```
在上面的代码中,我们使用了两个变量 `i` 和 `j`,其中 `i` 是遍历字符串的索引,`j` 是指向新字符串的索引。当遍历到非星号字符时,将其保存到新字符串的指定位置,并将 `j` 加一,以便下一个字符的保存。最后,将新字符串的最后一个字符标记为字符串结束符 `'\0'`。
相关问题
c语言输入一个字符串(该字符串由*和大写字母组成),去除该字符串开头的所有*。 例如输入:*****A*BCD***EF**** 输入:A*BCD***EF****
在C语言中,要去除一个字符串开头的所有星号(*),可以编写一个函数来实现这个功能。这个函数的逻辑是从字符串的第一个字符开始,逐个检查字符是否为星号,如果是,则继续向后移动到下一个字符,直到遇到非星号的字符为止。然后,将该位置作为新字符串的开始,并将原始字符串中的后续字符移动到前面来覆盖掉前面的星号。
以下是一个实现这一功能的C语言函数示例:
```c
#include <stdio.h>
#include <string.h>
void removeLeadingAsterisks(char *str) {
int len = strlen(str);
int j = 0;
// 从字符串的第一个字符开始,找到第一个非星号字符的位置
for (int i = 0; i < len && str[i] == '*'; ++i) {
j = i + 1;
}
// 如果有星号被找到,则将字符串中后续的字符向前移动
if (j > 0) {
memmove(str, str + j, strlen(str + j) + 1);
}
}
int main() {
char str[] = "*****A*BCD***EF****";
printf("原始字符串: %s\n", str);
removeLeadingAsterisks(str);
printf("处理后字符串: %s\n", str);
return 0;
}
```
这段代码定义了一个`removeLeadingAsterisks`函数,它接受一个字符串参数`str`,然后通过循环找到第一个非星号字符的位置,并使用`memmove`函数将字符串中的字符向前移动,从而去除开头的星号。在`main`函数中,我们创建了一个示例字符串,并展示了去除星号前后的结果。
阅读全文