请用c语言实现编写程序,删除字符串中间的所有星号*,如果首尾有*号,保留不变。字符串长度不超过200。 如:输入***street*****music***,则输出***streetmusic*** 输入:带*号的字符串(字符串中不含空格)。 输出:中间没有*号的字符串。
时间: 2024-06-25 20:00:23 浏览: 115
在C语言中,你可以使用循环和条件语句来实现这个功能。以下是一个简单的示例函数,它接受一个字符串作为输入,并返回处理后的结果:
```c
#include <stdio.h>
#include <string.h>
char* removeMiddleAsterisks(char* str) {
int len = strlen(str);
if (len <= 2) { // 如果字符串长度小于等于2,直接返回
return str;
}
int start = 0, end = len - 1;
while (start < end) {
if (str[start] == '*') {
start++;
continue;
}
if (str[end] == '*') {
end--;
continue;
}
// 如果两边都不是 *, 就复制字符到新的位置
str[start] = str[end];
start++, end--;
}
// 添加结束标志(如果原字符串首尾有*,则保持不变)
str[start] = '\0'; // 如果 end 指向非*字符,则将 * 放回字符串尾部
// 如果 str[start] 还是 *,说明所有字符都被*包围,不修改
return str;
}
int main() {
char input[201] = "***street*****music***";
char* result = removeMiddleAsterisks(input);
printf("处理后的字符串: %s\n", result);
free(result); // 注意释放内存,这里仅作演示,实际应用中需要确保正确管理内存
return 0;
}
```
阅读全文