分类: 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