在c语言中假定输入的字符串中只包含字母和*。请编写程序,它的功能是将字符串中的*全部删除。例如,字符串中的内容为“****A*BC*DEF*G*******”删除*后,字符串中的内容应该为“ABCDEFG”。在编写函数时,不得使用C语言提供的字符串函数。
时间: 2023-12-04 18:41:14 浏览: 135
```c
#include <stdio.h>
void delete_star(char *str) {
char *p = str;
char *q = str;
while (*p != '\0') {
if (*p != '*') {
*q = *p;
q++;
}
p++;
}
*q = '\0';
}
int main() {
char str[] = "****A*BC*DEF*G*******";
delete_star(str);
printf("%s\n", str); // 输出:ABCDEFG
return 0;
}
```
--相关问题--:
1. 如何在C语言中判断一个字符串是否为空?
2. 如何
相关问题
用C语言编写:假定输入的字符串中只包含字母和*。请编写程序,它的功能是将字符串中的*全部删除。
在C语言中,你可以使用`for`循环遍历字符串,并利用`if`条件判断字符是否为'*',如果是则跳过,如果不是则将其添加到结果字符串中。下面是一个简单的示例程序:
```c
#include <stdio.h>
#include <string.h>
// 功能:删除字符串中的*
void removeAsterisks(char *str, char *result) {
int i = 0;
while (str[i]) { // 遍历输入字符串
if (str[i] != '*') { // 如果不是'*'
result[i] = str[i]; // 将非'*'字符添加到结果字符串
result[i+1] = '\0'; // 结束当前字符并准备接收下一个
}
i++;
}
}
int main() {
char input[100], result[100];
printf("请输入含有字母和*的字符串:");
fgets(input, sizeof(input), stdin); // 从标准输入读取字符串
input[strcspn(input, "\n")] = '\0'; // 移除换行符
removeAsterisks(input, result);
printf("删除'*'后的字符串:%s\n", result);
return 0;
}
```
在这个程序中,我们首先获取用户输入的字符串,然后调用`removeAsterisks`函数删除所有的'*',最后打印出处理后的字符串。
假定输入的字符串中只包含字母和*。请编写程序,它的功能是将字符串中的*全部删除。例如,字符串中的内容为“****A*BC*DEF*G*******”删除*后,字符串中的内容应该为“ABCDEFG”。在编写函数时,不得使用C语言提供的字符串函数。
你可以通过遍历输入字符串的每个字符,并检查是否为'*',如果不是,则将其添加到新的字符串中,最终返回这个新字符串。下面是一个简单的C语言程序示例,展示了如何实现这个功能:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义函数用于过滤掉字符串中的*
char* removeStars(char* input) {
int i = 0, j = 0;
char result[100]; // 预设足够大的数组,实际情况需考虑输入字符串长度
while (input[i] != '\0') { // 遍历输入字符串直到结束符
if (input[i] != '*') { // 如果不是星号,复制到结果字符串
result[j++] = input[i];
}
i++; // 移动到下一个字符
}
// 结束后添加终止符
result[j] = '\0';
// 将处理后的字符串地址返回
return &result[0];
}
int main() {
char str[] = "****A*BC*DEF*G*******";
char* newStr = removeStars(str);
printf("删除*后的字符串: %s\n", newStr);
// 自动释放内存,防止内存泄漏
free(newStr);
return 0;
}
```
在这个例子中,`removeStars` 函数接受一个指向输入字符串的指针,创建一个新的字符数组并逐个复制非星号字符,最后返回新字符串的地址。
阅读全文
相关推荐













