淡泊明志 宁静致远
分类: C/C++
2007-07-13 10:09:17
删除指定字符串的相应字符
假设字符串 "cabcdefcgchci" ,那么要求你写一个函数,把该字符串中所有的字符
’c’ 删除掉。那么结果应该是 "abdefghi"。
00和01是用for循环来实现的算法
char * DeleteChararcter_00(char *str,int c)
{
char *p,*ret;
for(ret= p = str;*p;p++)
{
if(*p == c)
continue;
*str++
= *p;
}
*str
= '\0';
return ret;
}
char * DeleteChararcter_01(char *str,int c)
{
char *p,*ret;
for(ret= p = str;*p;p++)
{
if(*p != c)
*str++
= *p;
}
*str
= '\0';
return ret;
}
02和03是用while循环来实现的算法
char * DeleteChararcter_02(char *str,int c)
{
char *p,*ret;
ret
= p = str;
while(*p)
{
if(*p++ == c)
continue;
*str++
= *(p-1);
}
*str
= '\0';
return ret;
}
char * DeleteChararcter_03(char *str,int c)
{
char *p,*ret;
ret
= p = str;
while(*p)
{
if(*p != c)
*str++
= *p;
p++;
}
*str
= '\0';
return ret;
}
ammana_babi2008-05-04 09:13:22
这个主要是因为这个函数的返回的是指向字符串的首地址,类型是char *,所以这里多声明一个char *类型的变量 ret。用它来保存字符串的首地址,并用作返回。
chinaunix网友2008-05-02 19:43:24
请问为什么在char * DeleteChararcter_01(char *str,int c) 中要定义ret变量?str根本不是const类型,没必要多定义一个啊