模拟实现strstr:
在系统库函数中,存在strstr函数,它用于查找子字符串。它的函数原型为:
char *strstr( const char *string, const char *strCharSet );
这个函数中是要从*string中查找*strCharSet子字符串。因为只是查找,这两个字符串都不用发生改变,所以将他们声明为常量字符串。
模拟实现strstr:
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
char *my_strstr(const char *str1, const char *str2)//模拟实现strstr函数
{
assert(str1);
assert(str2);
char *p1 = NULL;
char *p2 = NULL;
char *ptr = str1;
while (*ptr)
{
p1 = ptr;
p2 = str2;
while (*p1 == *p2)
{
p1++;
p2++;
if (*p2 == '\0')
{
return ptr;//此时ptr的首地址就是要查找的子字符串在的位置
}
}
ptr++;//上面没找到,使ptr指向下一个位置继续寻找
}
return NULL;
}
int main()
{
char arr[20] = "abcdef";
char *p = "def";
char *ch = my_strstr(arr, p);//查找字符串函数
if (ch != NULL)
{
printf("%p\n", ch);//找到并输出找到的字符串的地址
printf("%s\n", ch);//输出字符串
}
else
{
printf("not exist\n");//没找到
}
system("pause");
return 0;
}
本文出自 “Stand out or Get out” 博客,请务必保留此出处http://jiazhenzhen.blog.51cto.com/10781724/1716818