博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助 

ammana_babi

杨晓曼,乖乖老婆! 我爱你,就像狮子爱猫咪。
babi.cublog.cn
关于作者  
姓名:ammana_babi
职业:程序员
年龄:22
位置:东莞
个性介绍:澹泊明智,宁静致远。

我的分类  




【我解C语言面试题系列】011 删除指定字符串的相应字符
【我解C语言面试题系列】011 删除指定字符串的相应字符

删除指定字符串的相应字符

 

假设字符串 "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;

}


 发表于: 2007-07-13,修改于: 2007-07-13 10:09
 已浏览1579次,有评论2条
推荐 投诉

  网友评论
  ygc 时间:2008-05-02 19:43:24 IP地址:218.2.216.★
请问为什么在char * DeleteChararcter_01(char *str,int c)
中要定义ret变量?str根本不是const类型,没必要多定义一个啊

  ammana_babi 时间:2008-05-04 09:13:22 IP地址:61.28.39.★
这个主要是因为这个函数的返回的是指向字符串的首地址,类型是char *,所以这里多声明一个char *类型的变量 ret。用它来保存字符串的首地址,并用作返回。


  发表评论



Copyright © 2001-2006 ChinaUnix.net All Rights Reserved

感谢所有关心和支持过ChinaUnix的朋友们
页面生成时间:4.04447

京ICP证041476号