编写程序,功能是:利用指针将字符串中的尾部符号(连续的*号)移动到该字符串的前面,作为前导字符,并重新输出移动后的新字符串
时间: 2024-02-18 17:00:34 浏览: 40
关于指针的程序
好的,下面是 C++ 代码实现:
```cpp
#include <iostream>
#include <cstring>
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 == '*') {
std::swap(*p, *endChars);
endChars++;
}
p--;
}
}
int main() {
char str[] = "hello***world****";
std::cout << "Original string: " << str << std::endl;
moveEndCharsToFront(str);
std::cout << "Modified string: " << str << std::endl;
return 0;
}
```
运行结果为:
```
Original string: hello***world****
Modified string: ****hello***world
```
代码解释:
首先获取字符串的长度,然后指针 `p` 指向字符串末尾。由于尾部符号是连续的,所以我们可以通过 `p` 指针一直向前移动,直到找到不是 `'*'` 的字符为止,此时 `p` 指向最后一个不是 `'*'` 的字符。
然后,指针 `endChars` 指向尾部符号的开始位置,即 `p` 的下一个字符。接下来,我们从后往前遍历字符串,如果当前字符是 `'*'`,就把它和 `endChars` 指向的字符交换位置,并把 `endChars` 后移一位。最终就能得到移动后的新字符串。
阅读全文