写一个c语言程序规定输入的字符串中只包含字母和@符号。请编写函数fun,它的功能是:除了首字符开始连续的@符号之外,将字符串中其它@符号全部删除。形参p指向字符串中第一个字母。 在编写函数时,不得使用C语言提供的字符串函数。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。测试用例: 输入:@@@@A@BC@@@DEF@G@@@@@输出:@@@@ABCDEFG 输入:fgdf@@@@h@h@@jgh@yt输出:fgdfhhjghyt
时间: 2023-03-08 19:52:42 浏览: 79
void fun(char *p)
{
int i;
int j;
i = 0;
while (p[i] == '@')
i++;
j = i;
while (p[i] != '\0')
{
if (p[i] != '@')
p[j++] = p[i];
i++;
}
p[j] = '\0';
}
相关问题
规定输入的字符串中只包含字母和@符号。请编写函数fun,它的功能是:除了首字符开始连续的@符号之外,将字符串中其它@符号全部删除。形参p指向字符串中第一个字母。 在编写函数时,不得使用C语言提供的字符串函数。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。测试用例: 输入:@@@@A@BC@@@DEF@G@@@@@输出:@@@@ABCDEFG 输入:fgdf@@@@h@h@@jgh@yt输出:fgdfhhjghyt
编写的函数可能如下:void fun(char *p)
{
char *q = p;
while(*q == '@')
{
q++;
}
while(*q != '\0')
{
if(*q == '@')
{
char *r = q + 1;
while(*r == '@')
{
r++;
}
while(*r != '\0')
{
*q = *r;
q++;
r++;
}
*q = '\0';
}
else
{
q++;
}
}
}
c语言规定输入的字符串中只包含字母和*号,编写函数 fun,其功能是:将字符串中的前导* 号和尾部*号全部删除,中间的*号不删除。
在C语言中,你可以通过遍历字符串并判断字符是否为'*'以及头尾位置来实现这个功能。下面是一个简单的fun函数的示例:
```c
#include <stdio.h>
#include <string.h>
void remove_leading_trailing_star(char *str) {
int i = 0; // 初始化指针
// 遍历字符串,找到第一个非'*'字符
while (str[i] == '*' && i < strlen(str)) {
i++;
}
// 如果字符串全为'*'则直接返回空字符串
if (i == strlen(str)) {
str[0] = '\0'; // 空字符串
return;
}
// 移除头尾'*'
str[i] = '\0'; // 结束字符串
i++; // 跳过第一个非'*'
// 再次遍历字符串,找到最后一个非'*'字符
while (str[strlen(str) - 1] == '*' && i < strlen(str)) {
str[strlen(str) - 1] = '\0'; // 删除尾部'*'
i--;
}
}
int main() {
char input[] = "****example**";
remove_leading_trailing_star(input);
printf("处理后的字符串: %s\n", input); // 输出:example**
return 0;
}
```
此函数首先找到第一个非'*'字符的位置,然后截断到那里,并移除头尾的'*'。注意,在C语言中,字符串常量是以'\0'结束的。
阅读全文