0001.假定输入的字符串中只包含字母和号。请编写函数fun,其功能是:除了尾部的号之外,将字符中的其它的号全部删除。形参p已指向字符串中最后的一个字母。在编写函数时,不得使用C语言提供的字符串函数。
例如,字符串中的内容为ABCDEFG*******,删除后,字符串中的内容应当是ABCDEFG*******。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
//注意:打开文件,输入数据的代码挺麻烦的,这里并未打出来,但fun函数功能没问题
#include<stdio.h>
void fun(char *a,char *p)
{ char *q;int i=0,k,j;
for(q=a;q<p;q++)//q指向数组a的开头,在q遍历到p之前实行for循环:删除指针p之前的'*',注意这里q最终指向p的时候才结束循环
{ if(*q!='*')a[i++]=*q;
k=i;
}
for(q;*q;q++)//p指向q为起始位置,将最后一个字母以及之后的内容写入到数组a中,直到原字符串遍历结束,
{a[k++]=*q;j=k;}//注意:由于j小于原字符串得到最后一个元素的下标,a数组的部分空间依旧是原来的字符
a[j]='\0'; //为新数组添加结束标志,否则a数组的部分空间依旧会存储原字符串的部分字符。
}
main()
{ char s[]="****A*BC*DEF*G*****",*t;
t=s;
while(*t)t++;
t--;
while(*t=='*')t--;
fun(s,t);
printf("删除后的字符串为:");puts(s);
}
运行结果: