请用C语言,将字符串首部的*号全部移到字符串的尾部,中间若有*号,保持中间的*号不动。字符串长度不超过200. 样例: ***street*****music*** street*****music******
时间: 2023-11-29 20:46:43 浏览: 48
以下是C语言实现将字符串首部的*号全部移到字符串的尾部的代码:
```c
#include <stdio.h>
#include <string.h>
void moveStar(char *str) {
int len = strlen(str);
int i, j;
for (i = 0; i < len; i++) {
if (str[i] != '*') {
break;
}
}
for (j = i; j < len; j++) {
str[j - i] = str[j];
}
for (j = len - i; j < len; j++) {
str[j] = '*';
}
}
int main() {
char str[201];
gets(str);
moveStar(str);
puts(str);
return 0;
}
```
相关问题
C语言:将字符串中的前导*号全部移到字符串的尾部。
可以使用指针来实现该功能,具体步骤如下:
1. 定义指向该字符串的指针,使用char类型指针。
2. 遍历字符串,找到第一个不是*号的字符的位置,记录下来。
3. 将指针移动到该位置。
4. 继续遍历字符串,将所有的*号移到字符串的尾部。
5. 在字符串的末尾添加一个空字符'\0',表示字符串的结束。
下面是实现该功能的C语言代码片段:
```c
void move_star(char* str) {
char* p = str; // 定义指向该字符串的指针
while (*p == '*') { // 找到第一个不是*号的字符的位置
p++;
}
char* q = p; // 将指针移动到该位置
while (*p != '\0') { // 遍历字符串
if (*p != '*') { // 如果当前字符不是*号
*q = *p; // 将当前字符移到非*号的字符的后面
q++;
}
p++;
}
while (*q != '\0') { // 将剩余的*号移到字符串的尾部
*q = '*';
q++;
}
*q = '\0'; // 在字符串的末尾添加一个空字符
}
```
可以使用以下代码进行测试:
```c
int main() {
char str[] = "***hello***world*****";
printf("原字符串:%s\n", str);
move_star(str);
printf("新字符串:%s\n", str);
return 0;
}
```
输出结果为:
```
原字符串:***hello***world*****
新字符串:hello***world*******
```
c语言将字符串首部的*号全部移到字符串的尾部,中间若有*号,保持中间的*号不动。字符串长度不超过200. 样例: ***street*****music*** street*****music******
在C语言中,你可以使用循环和指针来实现这个操作。以下是一个简单的步骤说明:
1. 首先,定义一个临时的字符数组,大小为原字符串加上一个额外的字符用于存放末尾的*号(如果原字符串末尾没有*号)。
2. 初始化两个指针,一个指向原字符串的开始(`src`),另一个指向临时数组的末尾(`dst`)。
3. 使用循环遍历原字符串,直到遇到'*'或到达字符串的末尾。对于每个非'*'字符,将其从原字符串复制到临时数组,并移动`dst`指针。遇到'*'时,只移动`dst`指针即可,不复制字符。
4. 如果原字符串末尾没有'*',则在临时数组的末尾添加一个'*'。
5. 最后,用临时数组替换原始字符串。
这里是一个简单的示例代码实现:
```c
#include <stdio.h>
#include <string.h>
void move_star_to_tail(char *str, char *dest, int dest_size) {
int src = 0, dst = dest_size - 1;
while (str[src] != '\0') {
if (str[src] == '*') {
// 如果是*号,直接移动指针
src++;
} else {
// 复制非*号字符到临时数组,并移动指针
*dest = str[src];
dest--;
src++;
}
}
// 检查是否需要在末尾添加*
if (str[src - 1] != '*') {
*dest = '*';
dst--;
}
*dest = '\0'; // 结束字符串
str = dest; // 更新原字符串地址
}
int main() {
char str[] = "***street*****music***";
char dest[201]; // 假设最大长度为200,加1防止溢出
move_star_to_tail(str, dest, sizeof(dest));
printf("Modified string: %s\n", dest);
return 0;
}
```
运行此程序会输出修改后的字符串:`street*****music******`
相关推荐
![text/x-c](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)