我是靠谱客的博主 清新秋天,最近开发中收集的这篇文章主要介绍面试100题之20实现Strstr函数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目描述:函数原型:char *Strstr(char *pTarget, const char *pPattern),判断pPattern是否是pTarget的一个子串,如果是,返回第一个匹配点的指针,否则返回空。

异常处理:若参数中有指针为NULL,返回NULL。如果pPattern是空串,返回整个pTarget。

核心代码如下:

#include<stdio.h>
/实现strstr函数
char *Strstr(char *pTarget, const char *pPattern)
{
if(pTarget == NULL || pPattern == NULL || *pTarget == '')
{
return NULL;
}
if(*pPattern == '')
{
return pTarget;
}
char *pTargetBegin = pTarget;//记录pTarget回退的位置
const char *pPatternBegin = pPattern;//记录pPattern回退的位置
while(*pTarget != '')
{
if(*pTarget == *pPattern)
{
pTargetBegin = pTarget;//遇到第一个相等的,记录指针位置
while(*pTarget != '' && *pPattern != '')
{
if(*(pTarget++) != *(pPattern++))
{
pTargetBegin = pTarget;//遇到第一个不相等的,就回退
pPattern = pPatternBegin;
break;
}
}
if(*pPattern == '')//若匹配完成,则返回
{
return pTargetBegin;
}
if(*pTarget == '')//若没有可以匹配的,返回NULL
{
return NULL;
}
}
else
{
++pTarget;
}
}
return NULL;
}

下面给出main函数的调用:

int main()
{
const int N = 50;
char str1[N];
char str2[N];
char *ans = NULL;
while(scanf("%s %s", str1, str2) != EOF)
{
ans = Strstr(str1, str2);
if(ans)
{
printf("%sn", ans);
}
else
{
printf("n");
}
}
return 0;
}



 

最后

以上就是清新秋天为你收集整理的面试100题之20实现Strstr函数的全部内容,希望文章能够帮你解决面试100题之20实现Strstr函数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(26)

评论列表共有 0 条评论

立即
投稿
返回
顶部