二级C字符串*删除操作
1.将字符串前导*号移动到字符串尾部
如:****A*BC*DEF*G**** ->A*BC*DEF*G********
void fun(char *a)
{
int i=0,n=0;  //"*"号统计器n赋初始值0
char *p;
p=a;  //工作指针p指向字符串s
while(*p=='*')//循环统计前导"*"号数目n
  {
    n++;
    p++;//字符串没变,只是地址增加
  }
while(*p)  //截取"*"号字符(此时的p为去掉前*号的)
  {
    a[i]=*p;
    i++;
    p++;
  }
while(n!=0)  //在串尾开始添加n个"*"号
  {
    a[i]='*';
    i++;
    n--;
  }
a[i]='\0';
}
main()
{char s[81]; int n=0;
  printf("Enter a string:\n");gets(s);
  fun(s);
  printf("The string after moveing:\n");puts(s);
}
2.将字符串中的前导*号全部删除,中间和后面的*号不删除。 
如:****A*BC*DEF*G*******->A*BC*DEF*G*******。
#include <stdio.h>
void  fun( char *a )
{
  char *p=a;
  while(*p=='*') p++;  /*指针p指向字符串第一个字母*/
  for(;*p!='\0';p++,a++)
      *a=*p;/*从第一个字母开始,其后的字符都放入指针a所指的字符串中(字符串没变,只是地址增加)*/
      *a='\0';/*在字符串最后加上结束标记符*/
}
main()
{ char s[81];
printf("Enter a string:\n");gets(s);
fun( s );
printf("The string after deleted:\n");puts(s);}
3.将字符串尾部的*号全部删除,前面和中间的*号不删除。 
c 字符串截取
如:****A*BC*DEF*G*******->****A*BC*DEF*G。
#include <stdio.h>
void  fun( char *a )
{
while(*a!='\0')a++;
a--;
while(*a=='*')a--;
*(a+1)='\0';
}
main()
{ char s[81];
printf("Enter a string:\n");gets(s);
fun( s );
printf("The string after deleted:\n");puts(s);
}
4.除了字符串前导的*号之外,将串中其它*号全部删除。
如:****A*BC*DEF*G*******->****ABCDEFG。
#include <stdio.h>
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';
}
main()
{ char s[81];
printf("Enter a string:\n");gets(s);
fun( s );
printf("The string after deleted:\n");puts(s);
}
5.除了尾部的*号之外,将字符串中其它*号全部删除。形参p已指向字符串中最后的一个字母。
如:****A*BC*DEF*G*******->ABCDEFG*******
#include <stdio.h>
void fun(char *a, char *p)
{
char *q=a;
int j=0;
while(*q&&q<p){
  if(*q !='*')a[j++]=*q;
  q++;
}
while(*p)a[j++]=*p++;//或者(a[j++]=*p;p++)
a[j]='\0';
}
main()
{char s[81],*t;
    printf("Enter a string:\n");gets(s);
  t=s;
  while(*t)t++;
  t--;
  while(*t=='*')t--;
  fun(s , t);
  printf("The string after deleted:\n");puts(s);
  }

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。