用c语言编写程序:假设输入的字符串中只包含英文字母和*号,利用指针编程实现将字符串中的*号全部移动到字符串的首部。1例如:输入**ab*c**d**,输出为*******abcd.
时间: 2024-05-15 22:10:15 浏览: 134
可以通过指针遍历字符串,找到每个*号,并将其移动到字符串的首部。具体实现步骤如下:
1. 定义一个指向字符串的指针p,遍历整个字符串,找到*号的个数count。
2. 定义另外一个指向字符串的指针q,初始化为p+count。
3. 遍历整个字符串,如果当前字符不是*号,则将该字符赋值给q指向的位置,然后将q指针后移一位。
4. 遍历完整个字符串后,将前count个位置赋值为*号,即可实现将字符串中的*号全部移动到字符串的首部。
以下是具体代码实现:
```c
#include <stdio.h>
#include <string.h>
void move_star(char *str) {
int count = 0;
char *p = str;
char *q;
while (*p) {
if (*p == '*') {
count++;
}
p++;
}
p = str;
q = p + count;
while (*p) {
if (*p != '*') {
*q = *p;
q++;
}
p++;
}
memset(str, '*', count);
}
int main() {
char str[] = "**ab*c**d**";
move_star(str);
printf("%s\n", str);
return 0;
}
阅读全文