C语言 操作题 除了尾部的*号之外,将字符中的其它的*号全部删除

假定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:除了尾部的*号之外,将字符中的其它的*号全部删除。在编写函数时,不得使用C语言提供的字符串函数。
例如,字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容应当是ABCDEFG*******。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include <stdio.h>
void fun(char *a)
{
char *p = a;
while(*p)
{
p++;
}
p--;
while(*p=='*')
{
p--;
}
char *t = a;// t指向字符数组的第一个单元
for(;t < p;t++)
{ // 复制非*字符,直到位置p
if(*t != '*')
*(a++) = *t;
}
for(;*t!='\0';t++)
*(a++)=*t; // 从p位置开始,复制余下的字符
*a = '\0';
}
main()
{
char s[81]="********a****b*cccc**********";
fun(s);
printf("The string afterdeleted:\n");
puts(s);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-09-07
while(*p=='*')
{
p--;
}
char *t = a;// t指向字符数组的第一个单元
for(;t < p;t++)
{ // 复制非*字符,直到位置p
if(*t != '*')
*(a++) = *t;
}
for(;*t!='\0';t++)
*(a++)=*t; // 从p位置开始,复制余下的字符
*a = '\0';