0001. 假定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:除了尾部的*号之外,将字符中的其它的*号全部删除。形参p已指向字符串中最后的一个字母。在编写函数时,不得使用C语言提供

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);
}

运行结果:
0001. 假定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:除了尾部的*号之外,将字符中的其它的*号全部删除。形参p已指向字符串中最后的一个字母。在编写函数时,不得使用C语言提供

上一篇:cglib 的 invoke 和 invokesuper 方法的区别


下一篇:Kotlin基础