编写程序,功能是:利用指针将字符串中的尾部符号(连续的*号)移动到该字符串的前面,作为前导字符,并重新输出移动后的新字符串例如 abc*def***变为***abc*def
时间: 2023-07-23 10:13:36 浏览: 57
好的,下面是 C 语言代码实现:
```c
#include <stdio.h>
#include <string.h>
void moveEndCharsToFront(char* str) {
int len = strlen(str);
char* p = str + len - 1; // p指向字符串末尾
while (*p == '*') p--; // p向前移动直到不是'*'
char* endChars = p + 1; // endChars指向尾部符号的开始位置
while (p >= str) {
if (*p == '*') {
char temp = *p;
int i = p - str;
while (i < len - 1) {
str[i] = str[i + 1];
i++;
}
str[len - 1] = temp;
len--;
endChars++;
}
p--;
}
}
int main() {
char str[] = "abc*def***";
printf("Original string: %s\n", str);
moveEndCharsToFront(str);
printf("Modified string: %s\n", str);
return 0;
}
```
运行结果为:
```
Original string: abc*def***
Modified string: ***abc*def
```
代码解释:
与 C++ 版本的代码类似,首先获取字符串的长度,然后指针 `p` 指向字符串末尾。由于尾部符号是连续的,所以我们可以通过 `p` 指针一直向前移动,直到找到不是 `'*'` 的字符为止,此时 `p` 指向最后一个不是 `'*'` 的字符。
然后,指针 `endChars` 指向尾部符号的开始位置,即 `p` 的下一个字符。接下来,我们从后往前遍历字符串,如果当前字符是 `'*'`,就把它和 `endChars` 指向的字符交换位置,并把 `endChars` 后移一位。在交换字符的过程中,我们采取了逐个移动字符的方法,即先将 `*p` 的位置空出来,然后将后面的字符逐个向前移动一位,最后把 `*p` 放到最后一个空出来的位置。最终就能得到移动后的新字符串。
相关推荐
![dsp](https://img-home.csdnimg.cn/images/20210720083646.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)