c语言将字符串首部的*号全部移到字符串的尾部,中间若有*号,保持中间的*号不动。字符串长度不超过200. 样例: ***street*****music*** street*****music******
时间: 2024-06-19 18:00:31 浏览: 123
在C语言中,你可以使用循环和指针来实现这个操作。以下是一个简单的步骤说明:
1. 首先,定义一个临时的字符数组,大小为原字符串加上一个额外的字符用于存放末尾的*号(如果原字符串末尾没有*号)。
2. 初始化两个指针,一个指向原字符串的开始(`src`),另一个指向临时数组的末尾(`dst`)。
3. 使用循环遍历原字符串,直到遇到'*'或到达字符串的末尾。对于每个非'*'字符,将其从原字符串复制到临时数组,并移动`dst`指针。遇到'*'时,只移动`dst`指针即可,不复制字符。
4. 如果原字符串末尾没有'*',则在临时数组的末尾添加一个'*'。
5. 最后,用临时数组替换原始字符串。
这里是一个简单的示例代码实现:
```c
#include <stdio.h>
#include <string.h>
void move_star_to_tail(char *str, char *dest, int dest_size) {
int src = 0, dst = dest_size - 1;
while (str[src] != '\0') {
if (str[src] == '*') {
// 如果是*号,直接移动指针
src++;
} else {
// 复制非*号字符到临时数组,并移动指针
*dest = str[src];
dest--;
src++;
}
}
// 检查是否需要在末尾添加*
if (str[src - 1] != '*') {
*dest = '*';
dst--;
}
*dest = '\0'; // 结束字符串
str = dest; // 更新原字符串地址
}
int main() {
char str[] = "***street*****music***";
char dest[201]; // 假设最大长度为200,加1防止溢出
move_star_to_tail(str, dest, sizeof(dest));
printf("Modified string: %s\n", dest);
return 0;
}
```
运行此程序会输出修改后的字符串:`street*****music******`
阅读全文