免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1869 | 回复: 5
打印 上一主题 下一主题

del_substr [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-02-14 15:45 |只看该作者 |倒序浏览
写了一个delete substring 的函数,但总觉得写得比较笨,一定有更好的办法。
希望大侠指教:

  1. char* del_substr(char *str1, const char *str2)
  2. {
  3.         char *cp = str1;
  4.         char *s1, *s2;
  5.        
  6.         if ( !*s2) return (char*)str1;
  7.         while(*cp){
  8.                 s1=cp;
  9.                 s2=(char*)str2;
  10.                 while(*s1 && *s2 && !(*s1-*s2)){
  11.                         s1++, s2++;
  12.                 }
  13.                 if(!*s2){
  14.                         while(*s1){
  15.                                 *cp++=*s1++;       
  16.                         }
  17.                         *cp='\0';
  18.                         return str1;       
  19.                 }
  20.                 cp++;
  21.         }
  22.        
  23.         return NULL;
  24. }
复制代码

论坛徽章:
0
2 [报告]
发表于 2007-02-14 15:58 |只看该作者
用过吗?能用吗?

论坛徽章:
0
3 [报告]
发表于 2007-02-14 16:07 |只看该作者
这个东东没有必要自己写吧?当然要了解原理的除外...

论坛徽章:
0
4 [报告]
发表于 2007-02-14 16:11 |只看该作者
是啊,就是想联系操作指针,所以才写的。

论坛徽章:
0
5 [报告]
发表于 2007-02-14 16:12 |只看该作者
原帖由 NewComet 于 2007-2-14 16:11 发表
是啊,就是想联系操作指针,所以才写的。


实际上就是一个KMP算法找到子串,然后在后面添加'\0'就完事了,俺没有仔细看你的代码.

论坛徽章:
0
6 [报告]
发表于 2007-02-14 16:40 |只看该作者
这样可以吗


  1. del_substr(char *s, char *d)
  2. {
  3. char *cp = strstr(s, d);
  4.   if(!cp) return;
  5.   strcpy(cp, cp + strlen(d));
  6. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP