前提假定输入的字符串中只包含字母和*号。
删除字符串中所有的*号。
例如,字符串中的内容为: ***********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;
}
}