您的位置:首页 > 其它

系统函数C字符串的实现(2):strstr

2015-08-11 22:47 344 查看
<span style="font-size:18px;">char*mystrstr(const char*_Str, const char*_SubStr)//此处两个参数都是const类型
{
if (NULL == _Str || NULL == _SubStr)
{
return NULL;
}
char*pres = NULL;
int alllength = mystrlen(_Str);//母串的长度
int sublength = mystrlenaddr(_SubStr);//子串的长度
for (int i = 0; i < alllength - sublength; i++)
{
int flag = 1;//假相等
for (int j = 0; j < sublength; j++)//子串长度
{
if (_SubStr[j] != _Str[j + i])//循环对比
{
flag = 0;
break;
}
}
if (flag)
{
pres = _Str + i;//找到地址
return pres;
}
}
}
//双指针法
char*mystrstraddr(const char*_Str, const char*_SubStr)
{
if (NULL == _Str || NULL == _SubStr)
{
return NULL;
}
char*pbak = _Str;
while (*pbak != '\0')
{
int  flag = 1;
char*pfind = pbak;//从当前字符串循环母串
char*psub = _SubStr;//从当前字符循环子串
while (*psub != '\0')//循环子串
{
if (*pfind != '\0')//母串提前结束
{
if (*pfind != *psub)//判断字符不等
{
flag = 0;
break;
}
else
{
pfind++;
psub++;
}
}
else
{
flag = 0;
break;
}
}
if (flag)
{
return pbak;//保存当前地址
}
pbak++;//指针前移
}
return NULL;
}
//strstr
void main()
{
char str[100] = "rocket hello zhoruifu";
char name[100] = "rocket ";
//char *p = mystrstr(str, name);//查找一个字符串在另外一个字符串是否存在
char *p = mystrstraddr(str, name);
if (p != NULL)
{
printf("找到\n");
}
else
{
printf("找不到\n");
}
system("pause");
}</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mystrstr