编写函数将字符串中的前导*号全部移到字符串的尾部。用c语音
时间: 2023-12-05 09:04:45 浏览: 107
下面是一个将字符串中前导星号移动到字符串尾部的 C 语言函数实现:
```c
#include <stdio.h>
#include <string.h>
void move_star_to_end(char *str) {
int len = strlen(str);
int i, j;
// 找到第一个非星号字符的下标
for (i = 0; i < len && str[i] == '*'; i++) {}
// 将非星号字符移动到字符串开头
for (j = i; j < len; j++) {
if (str[j] != '*') {
str[i++] = str[j];
}
}
// 将剩余的位置填充星号
while (i < len) {
str[i++] = '*';
}
}
int main() {
char str[] = "***hello***world*";
move_star_to_end(str);
printf("%s\n", str);
return 0;
}
```
以上代码中,我们首先使用 `strlen` 函数获取字符串的长度,然后使用两个循环将字符串中的星号移动到末尾。具体来说,第一个循环将指针 `i` 移动到第一个非星号字符的位置,第二个循环将非星号字符移动到字符串的开头,最后一个循环将剩余的位置填充星号。
相关问题
c语言写假定输入的字符串中只包含字母和*号。请编写函数 fun,它的功能是将字符串中的前导*号全部移到字符串的尾部。
以下是实现该功能的C语言代码:
```c
void fun(char *str) {
int len = strlen(str);
int i, j;
// 计算前导*号的数量
int count = 0;
for (i = 0; i < len; i++) {
if (str[i] == '*') {
count++;
} else {
break;
}
}
// 移动前导*号到字符串尾部
for (i = 0, j = count; j < len; i++, j++) {
str[i] = str[j];
}
for (i = len - count; i < len; i++) {
str[i] = '*';
}
}
```
该函数的思路是先计算前导*号的数量,然后将非*号字符向前移动,最后将前导*号移到字符串尾部。注意要使用字符串的长度来遍历字符串。
假定输入的字符串中只包含字母和*号,将字符串的前导*号全部移到宇符串的尾部,字符串中间的*不需要改变位置。 例如:通过键盘输入***abcd**efx*,程序执行后输出:abcd**elg****。 用c语言编程
您好,我是ChitGPT,一个能够进行对话和回答问题的AI。针对您的问题,可以使用以下C语言代码实现:
```c
#include <stdio.h>
#include <string.h>
void moveStar(char str[]) {
int len = strlen(str);
int i, j;
for(i = 0; str[i] == '*'; i++); // 找到第一个非*的字符
for(j = 0; i < len; i++) {
if(str[i] == '*')
continue;
str[j++] = str[i]; // 移动非*字符
}
for(i = 0; i < len - j; i++)
str[j + i] = '*'; // 将剩余的*移动到尾部
str[len] = '\0'; // 字符串结尾
}
int main() {
char str[100];
printf("请输入字符串:");
gets(str); // 输入字符串
moveStar(str); // 移动*字符
printf("移动后的字符串:%s\n", str); // 输出移动后的字符串
return 0;
}
```
这段代码通过字符串遍历和移动来实现将前导*移动到字符串尾部。其中使用了strlen函数获取字符串长度和gets函数获取输入字符串。最后使用printf函数输出移动后的字符串。
阅读全文