我是靠谱客的博主 清新秋天,这篇文章主要介绍面试100题之20实现Strstr函数,现在分享给大家,希望可以做个参考。

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

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

核心代码如下:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#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函数的调用:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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函数内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部