点击上方 蓝字关注我们
![99e0a293d99b8239ce0da0e7f7e282ff.png](https://i-blog.csdnimg.cn/blog_migrate/f15d8432e54cf8b22433da262ad86b97.png)
![4c97ad2750395f15ba9e6d552da6577a.png](https://i-blog.csdnimg.cn/blog_migrate/c6bfa70c49eda2acf6707210bcc9dc42.png)
/*
*代码功能: 判断一个字符串是否是另一个字符串的子串
*
* Author: 阿汤哥
* 微信公众号:C语言修仙
*/
#include
#include
/*mystrstr() - 函数功能:判断一个字符串是否是另一个字符串的子串
*@string: 一个字符串
@pattern: 另一个字符串
*返回值:如果是字串,那么返回首次出现的地址
*/
char * mystrstr(const char * string, const char * pattern){
int pattern_len = strlen(pattern);
char * p = string;
char * i = p, *j = pattern;
while(*(p+pattern_len -1) != '\0'){
while(*i == *j && *j != '\0'){
i++;
j++;
;
}
if (*j == '\0'){
printf("patter is the sub string of string\n");
return p;
}
p++;
i = p;
j =pattern;
}
return NULL;
printf("No Match!\n");
}
int main(void){
const char * string = "I like China very much 20200605";
const char * pattern1 = "ry much 20200605";
const char * pattern2 = "china";
const char * pattern3 = "China";
const char * pattern4 = "0605";
const char * pattern5 = "604";
const char * pattern6 = "";
mystrstr(string, pattern1);
mystrstr(string, pattern2);
mystrstr(string, pattern3);
mystrstr(string, pattern4);
mystrstr(string, pattern5);
mystrstr(string, pattern6);
return 0;
}
运行结果
往期推荐好文
★C语言编程工具的选择★求1000以内的水仙花数
★i++和++i有什么区别? ★「建议收藏」C语言编程判断回文数★看完你就明白:什么情况下该用int main(int argc, char *argv[])而不是int main(void)★C语言编程:打印一个圆形★福利:50本C语言电子书免费送了! ★C语言编程求解:1到1000之间所有的素数 ★ [必读]C语言学习者常见问题及回答点个在看
你最好看
![aa7b3ff8797ef8b1da0b951eb4b48281.png](https://i-blog.csdnimg.cn/blog_migrate/8a0b2cf8e9a370bb492f6ac32f803405.png)