C语言:将字符串中的前导*号全部移到字符串的尾部。
时间: 2023-12-05 18:04:46 浏览: 40
可以使用指针来实现该功能。首先,定义两个指针,一个指向字符串的开头,另一个指向字符串的末尾。然后,从字符串的开头开始扫描,如果遇到了 * 号,就将其后面的字符依次向前移动一位,直到末尾指针所指向的位置,最后将 * 号移到末尾指针所指向的位置。
下面是实现该功能的示例代码:
```c
#include <stdio.h>
#include <string.h>
void move_star(char *s) {
// 定义指针
char *start = s;
char *end = s + strlen(s) - 1;
while (start < end) {
// 扫描字符串,找到第一个 * 号
while (*start != '*' && start < end) {
start++;
}
// 扫描字符串,找到最后一个非 * 号字符
while (*end == '*' && start < end) {
end--;
}
// 将 * 号后面的字符向前移动
if (start < end) {
*end-- = *start++;
*start = '*';
}
}
}
int main() {
char s[] = "***C*SDN*";
move_star(s);
printf("%s\n", s); // 输出:CSDN***
return 0;
}
```
在该示例代码中,我们首先定义了指针 `start` 和 `end`,分别指向字符串的开头和末尾。然后,使用两个 while 循环扫描字符串,找到第一个 * 号和最后一个非 * 号字符。接着,将 * 号后面的字符向前移动,并将 * 号移到字符串的末尾。最后,输出移动后的字符串。