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); }
运行结果: