C语言程序设计将字符串中最前面和最后面的*号去掉,并将字符串中间1个或多个连续的*号替换为1个空格。 例如:初始字符串为"*****this*is****C****program****"结果为"this is C program"
时间: 2023-11-25 09:50:23 浏览: 726
以下是C语言程序设计将字符串中最前面和最后面的*号去掉,并将字符串中间1个或多个连续的*号替换为1个空格的代码实现:
```c
#include <stdio.h>
#include <string.h>
static void rep(char str1[], char str2[]) {
int front, back, i, j;
front = 0;
back = strlen(str1);
j = 0;
for (i = 1; i < back; i++) {
if (str1[i] != '*')
str2[j++] = str1[i];
else if (str1[i - 1] != '*')
str2[j++] = ' ';
}
str2[j] = '\0';
}
int main(void) {
char str1[] = "*****this*is***C***program***", str2[80];
rep(str1, str2);
puts(str2);
getchar();
return 0;
}
```
相关问题
将字符串中最前面和最后面的*号去掉,并将字符串中间1 个或多个连续的*号替换为1个空格。 例如:初始字符串为"*****this*is****C****program****", 结果为"this is C program" C语言
你可以使用字符串的操作函数和循环来实现这个需求。首先,你可以使用字符串的`substr`函数来去掉最前面和最后面的*号。然后,你可以使用循环遍历字符串,找到连续的*号并将它们替换为一个空格。
下面是一个示例代码:
```cpp
#include <iostream>
#include <string>
std::string removeStarsAndReplace(std::string str) {
// 去掉最前面和最后面的*号
while (str.front() == '*') {
str = str.substr(1);
}
while (str.back() == '*') {
str.pop_back();
}
// 将连续的*号替换为一个空格
for (size_t i = 0; i < str.length(); i++) {
if (str[i] == '*' && str[i + 1] == '*') {
str.replace(i, 2, " ");
}
}
return str;
}
int main() {
std::string str = "*****this*is****C****program****";
std::string result = removeStarsAndReplace(str);
std::cout << result << std::endl;
return 0;
}
```
输出结果为:
```
this is C program
```
用C语言编写函数将字符串中的前导*号全部移到字符串的尾部,程序包含指针
好的,可以使用指针实现该函数。下面是一个示例代码:
```c
#include <stdio.h>
void move_star(char *str) {
char *p = str;
char *q = str;
while (*p) {
if (*p != '*') {
*q++ = *p;
}
p++;
}
while (*q) {
*q++ = '*';
}
}
int main() {
char str[] = "***hello*world**";
printf("Original string: %s\n", str);
move_star(str);
printf("Modified string: %s\n", str);
return 0;
}
```
该函数的实现思路是:使用两个指针p和q,初始都指向字符串的首字符。遍历整个字符串,如果p指向的字符不是星号,则将其移动到q指向的位置,并将q向后移动一个位置;否则只将p向后移动一个位置。最后,将q指向的位置及其后面的所有字符都改为星号即可。
注意,此处的字符串是以字符数组的形式传递给函数的,因此需要在函数内部修改该字符数组。如果需要修改传入的字符串,可以将函数参数改为指向字符数组的指针。