aurain
技术文摘
C++博客
首页
新文章
新随笔
聚合
管理
posts - 137, comments - 268, trackbacks - 0
删除首次出现字串
今天在cppblog看了一篇这样的博文,下午的时候为了熟悉下,自己也写了个,本来要给出原博文的地址的,但发现记不起来了,当时也是随意浏览的,这里表示抱歉。
int
mystrstr(
const
char
*
src,
const
char
*
sub)
{
int
ret
=
-
1
;
char
*
cp
=
(
char
*
)src;
char
*
s1,
*
s2;
if
(
!*
sub)
return
ret;
while
(
*
cp)
{
s1
=
cp;
s2
=
(
char
*
)sub;
while
(
*
s1
&&
*
s2
&&
!
(
*
s1
-*
s2))
{
s1
++
;
s2
++
;
}
while
(
!*
s2)
return
ret;
cp
++
;
ret
++
;
}
return
ret;
}
int
mystrlen(
const
char
*
src)
{
int
ret
=
0
;
while
(
*
src
++
)
{
ret
++
;
}
return
ret;
}
bool
del_substr(
char
*
src,
const
char
*
sub)
{
int
idx
=
mystrstr(src, sub);
if
(idx
<
0
)
{
return
false
;
}
int
iLen
=
mystrlen(sub);
for
(
int
i
=
idx
+
1
; i
<
mystrlen(src); i
++
)
{
*
(src
+
i)
=
*
(src
+
i
+
iLen);
}
return
true
;
}
int
_tmain(
int
argc, _TCHAR
*
argv[])
{
char
szSrc[]
=
"
abcdefghi
"
;
char
*
szSub
=
"
de
"
;
del_substr(szSrc, szSub);
cout
<<
szSrc
<<
endl;
}
posted on 2008-07-07 16:29
水
阅读(1769)
评论(10)
编辑
收藏
引用
所属分类:
算法与数据结构
FeedBack:
#
re: 删除首次出现字串
2008-07-07 17:10 |
hamburger
!(*s1-*s2)为什么不写成(*s1 == *s2)?
回复
更多评论
#
re: 删除首次出现字串
2008-07-07 17:45 |
陈梓瀚(vczh)
事实上==更好,x86的比较不需要产生结果,减法会产生结果。
回复
更多评论
#
re: 删除首次出现字串[未登录]
2008-07-08 03:11 |
snow
how about src is NULL , and sub is NULL
回复
更多评论
#
re: 删除首次出现字串[未登录]
2008-07-08 03:57 |
strstr
if standard string functions are allowed to be used, how about following function? Maybe you just want to write your own strstr and strlen functions?
char * del_substr(char *src, const char *sub)
{
int i, j;
char *dst = src;
char *temp = strstr(src, sub);
if (src == NULL)
return NULL;
if (sub == NULL || temp == NULL)
return dst;
j = strlen(temp) - strlen(sub);
for (i = temp-dst; i < temp-dst+j; i++)
dst[i] = dst[i + strlen(sub)];
dst[i] = '\0';
return dst;
}
回复
更多评论
#
re: 删除首次出现字串
2008-07-08 08:37 |
feosun
while (!*s2)
return ret;
写成
if (!*s2)
return ret;
不是更好么
回复
更多评论
#
re: 删除首次出现字串
2008-07-08 13:49 |
水
@hamburger,陈梓瀚(vczh)
这个我是借鉴微软标准库里面的实现方式,所以当时没考虑那么多。谢谢两位的提醒,受教了!
回复
更多评论
#
re: 删除首次出现字串
2008-07-08 13:50 |
水
@snow
对,没有对传入参数进行判断了,以后我要注意了,即使平时测试也要养成严格的习惯。谢谢你
回复
更多评论
#
re: 删除首次出现字串
2008-07-08 13:52 |
水
@strstr
嗯,写这个就是在不能使用crt的情况下的。
你写的也对,效率应该比我的要好些
回复
更多评论
#
re: 删除首次出现字串
2008-07-08 13:53 |
水
@feosun
很有道理!
回复
更多评论
#
re: 删除首次出现字串
2008-07-09 09:32 |
cexer
博主是一个虚心学习的好同志!学习了!
回复
更多评论
刷新评论列表
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
大数据量,海量数据处理方法总结(转)
hash算法大全(转http://www.cppblog.com/koson/archive/2010/03/11/109446.html)
整数划分算法原理与实现
求二进制数中1的个数
计算最大公约数的两种算法
用至少三种方法实现1+2+...+n
Win32内存相关API
删除首次出现字串
内部排序算法比较
一个数组,下标从0到n,元素为从0到n的整数。判断其中是否有重复元素
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
V2EX创意工作者的社区
<
2008年7月
>
日
一
二
三
四
五
六
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(17)
给我留言
查看公开留言
查看私人留言
随笔分类
(138)
Android(2)
c/c++基础知识(17)
Java(4)
Linux(7)
socket编程(8)
sql(3)
tcp/ip(18)
udt分析(2)
vc(13)
Windows开发(10)
windows驱动(17)
架构(1)
内存管理(3)
软件分析(8)
算法与数据结构(10)
网络安全(2)
项目管理(8)
协议分析(4)
移动互联(1)
随笔档案
(137)
2015年11月 (1)
2015年5月 (1)
2014年11月 (1)
2014年10月 (1)
2014年7月 (7)
2014年4月 (1)
2014年3月 (3)
2014年2月 (4)
2014年1月 (2)
2013年10月 (1)
2013年3月 (1)
2013年1月 (1)
2012年12月 (1)
2012年11月 (2)
2012年7月 (1)
2011年9月 (1)
2011年8月 (2)
2011年6月 (2)
2011年3月 (1)
2010年11月 (2)
2010年9月 (1)
2010年8月 (1)
2010年7月 (5)
2010年5月 (2)
2009年12月 (3)
2009年11月 (1)
2009年9月 (3)
2009年8月 (3)
2009年6月 (7)
2009年4月 (5)
2009年3月 (7)
2009年2月 (3)
2009年1月 (7)
2008年12月 (1)
2008年11月 (6)
2008年10月 (5)
2008年9月 (2)
2008年8月 (6)
2008年7月 (2)
2008年6月 (11)
2008年5月 (3)
2008年4月 (4)
2008年3月 (3)
2008年2月 (7)
2008年1月 (1)
2007年12月 (2)
网络开发
C++的罗浮宫
C++基础知识
逆水行舟
基础知识
紫月城游戏软件
网络编程
最新随笔
1. Java调优知识汇总
2. Web API
3. htop使用备忘
4. Windows下jre server模式启动
5. ubuntu下允许mysql远程连接
6. SQLServer性能优化之 nolock,大幅提升数据库查询性能
7. 数据库SQL优化大总结之 百万级数据库优化方案
8. Ubuntu12.0.4 server手工安装jdk6
9. Ubuntu12.04 server配置apache2+php5+mysql5环境
10. Ubuntu 12.04 root登录
搜索
积分与排名
积分 - 493571
排名 - 36
最新随笔
1. Java调优知识汇总
2. Web API
3. htop使用备忘
4. Windows下jre server模式启动
5. ubuntu下允许mysql远程连接
6. SQLServer性能优化之 nolock,大幅提升数据库查询性能
7. 数据库SQL优化大总结之 百万级数据库优化方案
8. Ubuntu12.0.4 server手工安装jdk6
9. Ubuntu12.04 server配置apache2+php5+mysql5环境
10. Ubuntu 12.04 root登录
最新评论
1. re: 浩方对战平台原理初步分析
有趣,感谢博主的分析,也敬佩博主的人品。
--Svtter
2. re: 一种自定义网络通信协议
怎样学会
--钟易成
3. re: 如何编译TrueCrypt 7.0a源码
您好,请问现在还可以找您发一下源码么?
--xiaoyaya103
4. re: svn提交时设置文件类型过滤
楼主我尝试了您的方法 好像不去效果
--ss
5. re: 介绍一个P2P点播直播开源项目,挺不错的
支持!!
--刘芳
阅读排行榜
1. GetWindowRect和GetClientRect(转)(34218)
2. 计算最大公约数的两种算法(24199)
3. windows中定时操作(SetTimer函数用法)(21818)
4. bug严重级别和优先级别定义(13875)
5. 介绍一个P2P点播直播开源项目,挺不错的(12614)
评论排行榜
1. 如何编译TrueCrypt 7.0a源码(29)
2. 用至少三种方法实现1+2+...+n(19)
3. 【分享】软件工程规范-软件工程文档模板(12)
4. 指针和引用的联系与区别(10)
5. 删除首次出现字串(10)