编写程序,功能是:利用指针将字符串中的尾部符号(连续的*号)移动到该字符串的前面,作为前导字符,并重新输出移动后的新字符串
时间: 2024-02-11 11:08:10 浏览: 50
C语言 指针
好的,这是一个比较基础的字符串操作问题,我可以帮你编写代码来实现。
代码如下:
```c
#include <stdio.h>
#include <string.h>
void move_star(char *str) {
int len = strlen(str);
char *p = str + len - 1; // 指向字符串末尾
int star_count = 0;
while (*p == '*') { // 统计连续的*号数量
star_count++;
p--;
}
p++; // p指向最后一个非*号字符
char *q = str + len - 1; // q指向字符串末尾
while (star_count--) { // 将*号移到字符串前面
*(--p) = '*';
q--;
}
*q = '\0'; // 在新的字符串结尾加上'\0'
}
int main() {
char str[100];
printf("请输入字符串:");
scanf("%s", str);
move_star(str);
printf("移动后的字符串为:%s\n", str);
return 0;
}
```
这个程序中的 `move_star` 函数接受一个指向字符串的指针,将字符串中的尾部符号(连续的*号)移动到字符串前面,并重新输出移动后的新字符串。
程序首先使用 `strlen` 函数获取字符串的长度,然后使用指针 `p` 指向字符串末尾,统计连续的*号数量。接着,指针 `q` 也指向字符串末尾,然后将*号移到字符串前面。最后,在新的字符串结尾加上'\0'。
在 `main` 函数中,程序先读入一个字符串,然后调用 `move_star` 函数对字符串进行处理,并输出结果。
希望这个程序能够解决你的问题。
阅读全文