功能是:利用指针将字符串中的尾部符号(连续的*号)移动到该字符串的前面,作为前导字符,并重新输出移动后的新字符串
时间: 2023-12-10 19:40:03 浏览: 51
好的,可以参考下面的代码实现:
```c
#include <stdio.h>
#include <string.h>
void move_star(char *str) {
int len = strlen(str);
char *p = str + len - 1; // 指向字符串的最后一个字符
while (*p == '*') { // 寻找尾部符号
p--;
}
int count = len - (p - str) - 1; // 计算连续*号的数量
while (p >= str) { // 将尾部符号移动到前面
if (*p != '*') {
*(p + count) = *p;
} else {
count--;
*(p + count) = '*';
}
p--;
}
}
int main() {
char str[100];
printf("请输入字符串:");
scanf("%s", str);
move_star(str);
printf("移动后的新字符串为:%s\n", str);
return 0;
}
```
解释一下代码实现过程:
1. 先计算字符串的长度,然后用指针 p 指向字符串的最后一个字符;
2. 从后往前遍历字符串,寻找尾部符号(即连续的*号),并统计连续*号的数量;
3. 将尾部符号移动到前面,并更新指针 p 的位置;
4. 最终输出移动后的新字符串。
注意,这里假设字符串中只有*号作为尾部符号,如果有其他的符号作为尾部符号,需要根据实际情况进行修改。
阅读全文