用c语言不使用指针编写函数fun(char *a),其功能是:除了字符串前后连续的*号外,将字符串中间的*号全部删除。主函数中输入字符串,调用函数,并输出结果字符串。若输出:******A*BC*DEF*G****,删除后输出是:******ABCDEFG****。
时间: 2024-01-10 19:21:24 浏览: 34
```c
#include <stdio.h>
void fun(char *a) {
int i, j;
int len = strlen(a);
// 删除字符串中间的*号
for (i = 0, j = 0; i < len; i++) {
if (a[i] != '*' || (i > 0 && a[i-1] == '*' && a[i] == '*')) {
a[j++] = a[i];
}
}
a[j] = '\0';
}
int main() {
char str[100];
printf("请输入字符串:");
scanf("%s", str);
fun(str);
printf("删除后的字符串是:%s\n", str);
return 0;
}
```
相关问题
C语言编写一个函数fun(char* s),该函数的功能是把字符串中的内容逆置
你可以使用指针来实现字符串的内容逆置。以下是一个用C语言编写的函数`fun`的示例代码:
```c
#include <stdio.h>
#include <string.h>
void fun(char* s) {
int length = strlen(s);
char* start = s;
char* end = s + length - 1;
while (start < end) {
char temp = *start;
*start = *end;
*end = temp;
start++;
end--;
}
}
int main() {
char str[] = "Hello, World!";
printf("原始字符串:%s\n", str);
fun(str);
printf("逆置后的字符串:%s\n", str);
return 0;
}
```
在这个示例中,函数`fun`接受一个字符指针`s`作为参数,代表要逆置的字符串。首先,使用`strlen`函数获取字符串的长度。然后,使用两个指针`start`和`end`分别指向字符串的首尾字符。通过交换`start`和`end`指向的字符,并且让`start`指针向后移动,`end`指针向前移动,直到`start`指针不再小于`end`指针为止,完成字符串内容的逆置。
在`main`函数中,我们定义了一个字符串`str`,并将其作为参数传递给函数`fun`进行逆置。最后,打印逆置后的字符串结果。
运行上述代码,输出结果如下:
```
原始字符串:Hello, World!
逆置后的字符串:!dlroW ,olleH
```
希望能帮助到你!如有任何疑问,请随时提问。
用c语言编一个函数fun(char *s),函数的功能是把s所指字符串中的内容逆置。
以下是一个用C语言编写的函数 `fun(char *s)`,它可以将参数 `s` 所指字符串中的内容逆置:
```c
void fun(char *s)
{
int len = strlen(s);
for (int i = 0; i < len / 2; i++) {
char temp = s[i];
s[i] = s[len - i - 1];
s[len - i - 1] = temp;
}
}
```
该函数使用了一个循环来交换字符串中的字符。在每一次循环中,它将字符串中的第 `i` 个字符与字符串中的倒数第 `i+1` 个字符进行交换,直到交换到字符串中心位置。这样就可以将字符串中的内容逆置。