strstr 源码
来源:互联网 发布:java b s 图形化界面 编辑:程序博客网 时间:2024/06/08 09:31
char * strstr (register char *buf, register char *sub)
{
register char *bp;
register char *sp;
if (!*sub)
return buf;
while (*buf)
{
bp = buf;
sp = sub;
do
{
if (!*sp)
return buf;
} while (*bp++ == *sp++);
buf += 1; //若没有从上面的循环体内返回 此处为何还是只前进一步? 这样的话效率就低了吧?
}
return 0;
}
/*
得到s1中第一次包含s2字符串的位置指针。
*/
#include <stdlib.h>
char * my_strstr(const char *s1,const char *s2)
{
if (*s1 == 0)
{
if (*s2)
return (char *) NULL;
return (char *) s1;
}
while (*s1)
{
size_t i;
i = 0;
while (1)
{
if (s2[i] == 0)
{
return (char *) s1;
}
if (s2[i] != s1[i])
{
break;
}
i++;
}
s1++;
}
return (char *) NULL;
}
int main()
{
char *str1 = "ammana_babi";
char *str2 = "babi";
char *p;
if( (p = my_strstr(str1,str2)) == NULL)
printf("Can't find the string /"%s/"!/n",str2);
else
printf("Find the string /"%s/"!/n",p);
str1 = "abc";
str2 = "def";
if( (p = my_strstr(str1,str2)) == NULL)
printf("Can't find the string /"%s/"!/n",str2);
else
printf("Find the string /"%s/"!/n",p);
system("pause");
return 0;
}
下面是另外一个版本的 strstr函数的源代码:
char * my_strstr(const char *src,const char *substr)
{
char *p,*tt;
if(src == NULL || substr == NULL)
return (char *) NULL;
if(!*src || !*substr)
return (char *) NULL;
while (*src)
{
for(tt = (char *)src,p = (char *)substr;*p;tt++,p++)
{
if(*tt != *p)
break;
}
if(*p == '/0')
return (char *) src;
src++;
}
return (char *) NULL;
}
- strstr 源码
- strstr源码
- strstr源码
- strstr源码
- strstr的源码
- strstr和strncmp源码实现
- strstr和strncmp源码实现
- 【库函数源码剖析系列】(3) strstr
- 仰视源码,实现strstr和find
- strstr源码学习,面试用得到
- strstr
- strstr
- strstr
- strstr()
- strstr
- strstr
- strstr
- strstr
- java web 开发初学v_2010_8_23之javascrpt(4)
- 连接远程桌面方法
- memmove
- 开发人员必知的20+HTML5技巧
- const用法小结
- strstr 源码
- CISCO pvlan 聚合 与 华为超级VLAN聚合区别
- 令人难以置信的纯 CSS3 图标
- 种用ADO从文本文件中导入数据库的两种方法比较
- BW项目经验分享——项目后评价的重要性
- Gentoo的在VMware下的安装、更新和重构
- 关于“jsp界面敲回车刷新页面或弹出打开、保存某个action”的处理方法
- 开放的互联网,开放的网站
- 旋转+缩放