前提假定输入的字符串中只包含字母和*号。

删除字符串中所有的*号。

例如,字符串中的内容为: ***********A*BC*DEF *******,
删除后,字符串中的内容应当是: ABCDEFG。
void  fun( char *a )
{
	int i=0;
	char *q = a;
	while(*q)
	{	if(*q!='*')	
			a[i++] = *q;
		q++;
	}
		a[i] = '\0';
}//依次循环遍历,将*刨除去

将字符串中的前导 * 号全部删除,中间和尾部的*号不删除。

例如,字符串中的内容为: *********A*BC*******DEF*G****,
 删除后,字符串中的内容应当是: A*BC*DEF*G****。
void  fun( char *a )
{
	int i=0;
	char *p = a;
	while(*p&&*p=='*')
		p++;
	while(*p)
		a[i++]=*p++;
	a[i]='\0';

}//将字符串a赋值到p,循环p,直至p不等于'*',再将p的下一个地址循环赋值给a,收尾。

除了尾部的号之外,将字符串中其它号全部删除。形参p已指向字符串中最后的-一个字母。

例如,字符串中的内容为: ****A*BC*DEF*G******,
 删除后,字符串中的内容应当是: ABCDEFG*******.
void  fun( char *a, char *p )
{
	int i=0;char *q=a;
	while(q<=p)
	{
	if(*q!='*') a[i++]=*q;
	q++;
	}
	while(*q)
		a[i++]=*q++;
	a[i]='\0';
}
//先循环q直至p,将不等于'*'的字母依次传入a,
//再接着循环q,直至结束,收尾。

除了字符串前导和尾部的号之外,将串中其它号全部删除。形参h已指向字符串中第一个字母,形参p已指向字符串中最后一个字母。

例如, 字符串中的内容为: ****A*BC*DEF********,
删除后,字符串中的内容应当是: ****ABCDEF*******。
void  fun( char *a, char *h,char *p )
{
	int j=0; char *q=a;
	while(*q&&q<h)
		a[j++]=*q++;
	while(*h&&*p&&h<p)
	{
		if(*h!='*') a[j++]=*h;
		h++;
	} 
	while(*p)
		a[j++]=*p++;
	a[j]='\0'; 
}//分三次循环但注意不能为空,例子****,输出要限定while(*p)
从q开始,循环,
从h开始,if语句刨去'*',循环
从p开始,循环收尾

使字符串中尾部的号不得多于n个;若多于n个,则删除多余的号;若少于或等于n个,则什么也不做,字符串中间和前面的*号不删除。

例如,字符串中的内容为:****A*BC*DEF*G******, 
若n的值为4,删除后,字符串中的内容应当是: ****A*BC*DEF*G****;
若n的值为7,则字符串中的内容仍为: ****A*BC*DEF*******。
void  fun( char *a,int  n )
{
	int i=0,k=0; 
	char *p,*t; p=t=a;
	while(*t) t++; 
	t--;
	while(*t=='*'){k++;t--;} t++;
	if(k>n)
	{
		while(*p&&p<t+n) 
			a[i++]=*p++;
		a[i]='\0';
} 
}

除了字符串前导的号之外,将串中其它号全部删除。

例如, 字符串中的内容为: ****A*BC*DEF*******,
删除后,字符串中的内容应当是: ****ABCDEFG.
void  fun( char *a )
{
	int i=0,k;
	while(a[i]=='*') i++;
	k=i;
	while(a[i]!='\0') 
	{
	  if(a[i] != '*') a[k++]=a[i];
  	  i++;
	}
	a[k]='\0';
}

将字符串中的前导*号全部移到字符串的尾部。函数fun中给出的语句仅供参考。

例如, 字符串中的内容为: ******A*BC*DEF*G****, 
移动后,字符串中的内容应当是: A*BC*DEF**********。
void  fun( char *a )
{
	char *p,*q;
	int n=0;
	p=a;
	while(*p=='*')  /* 统计串头'*'个数n */
		{n++; p++;}
	q=a;
/* 向前复制字符串,请填写相应的语句完成其功能 */
	while(*p) {
  		*q=*p;
  		p++;
  		q++;
	}
	for(;n>0;n--)  /* 在串尾补n个'*' */
  		*q++='*';
	*q='\0';  
}

使字符串的前导号不得多于n个;若多于n个,则删除多余的号;若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。

例如,字符串中的内容为: ******A*BC*DEF*G****,
 若n的值为4,删除后,字符串中的内容应当是: ****A*BC*DEF*G****; 
 若n的值为8,则字符串中的内容仍为: ******A*BC*DEF****。
  n的值在主函数中输入。
void  fun( char *a, int  n )
{
	int i=0,j,k=0;
	while(a[k]=='*') k++;
	if(k>n)
	{
  		i=n;j=k;
  		for(; a[j] !=0 ; j++)
    		a[i++]=a[j];
  		a[i] = 0;
  	}
}