Chinaunix首页 | 论坛 | 博客
  • 博客访问: 70035
  • 博文数量: 13
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 145
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-09 19:43
文章分类

全部博文(13)

文章存档

2009年(5)

2008年(8)

我的朋友

分类: C/C++

2009-02-25 21:30:03

  原型:extern char *strstr(char *haystack, char *needle);

用法:#include

功能:从字符串haystack中寻找needle第一次出现的位置(不比较结束符NULL)。

说明:返回指向第一次出现needle位置的指针,如果没找到则返回NULL。
在这里我们对strstr这个函数重新实现一下,我的代码实现如下:

#define assert(x) _assert((x), #x, __FILE__, __LINE__)
void _assert(int condition, char const *condition_str, char const *file, int line)
{
if (!condition)
{
printf("Assertion '%s'failed:%s:%d\n", condition_str, file, line );
while(1);//这里可以使用exit(1);根据个人需要而定
}
}
char *strstr(char *s1, char *s2)
{
char *temp_s1 = s1, *temp_s2 = s2;
int i = 0;

assert(s1 != NULL && s2 != NULL);

if (strlen(s1) < strlen(s2))
{
return NULL;
}

while (*temp_s1 != '\0')
{
while (*temp_s1++ == *temp_s2++)
{
i++;
}

if (*temp_s2 == '\0')
{
return (temp_s1-i);
}
else
{
temp_s1 = ++temp_s1;
temp_s2 = s2;
i = 0;
}
}

return NULL;
}

本处的代码实现是在参考他人的基础上,经过自己的验证修改的。
文章参考于http://blog.chinaunix.net/u2/84450/showart_1663803.html
阅读(1601) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~