strstr()函数实现
程序员文章站
2024-03-22 13:39:28
...
#define _CRT_SECURE_NO_WARNINGS 1
#include"stdio.h"
#include "windows.h"
char* My_strstr( char* p1, const char* p2)
{
char * src = p2;
char * dst = p1;
while (*dst)//当父串没走到结尾
{
char *start = dst;//查到父串的位置,作个保存,不匹配时返回使用
while (*dst == *src && *src != '\0')//当找到字串存在匹配时,接着判断是否完全匹配
{
dst++;//
src++;
}
if (*src == '\0')//完全匹配 子串指针到了结尾,说明查到存在
{
return start;//返回查找到匹配的位置
}
else//否则说明,该趟不完全匹配
{
//start++; //父串指针后移,因为再次循环时 start 将被重新赋值为dst指针
src = p2;//重新指向被查字串的头
}
dst++;//父串指针向后移
}
return NULL;
}
int main(void)
{
char *p1 = "as long as you love me";
char p2[] = "you";
//printf("%s",p1);
printf("%s\n", My_strstr(p1, p2));
system("pause");
return 0;
}
总结 : 机理 :
1 两个大循环 一个父串 ,一个待查找串(子串)
2 设置一个记录,不匹配返回
3 控制循环条件
下一篇: Java实现复数(二十一)