首页 > 代码库 > 字符串子串查找strstr
字符串子串查找strstr
问题:
函数名: strstr
函数原型:char *strstr(const char *str1, const char *str2);
语法:* strstr(str1,str2)
str1: 被查找目标 string expression to search.
str2: 要查找对象 The string expression to find.
返回值:该函数返回str2第一次在str1中的地址,如果没有找到,返回NULL
例子:
charstr[]=
"1234xyz"
;
char
*str1=
strstr
(str,
"34"
);
得到str1="34xyz"
方法1:
一个指针扫描,当首字母相同时两个指针扫描两个字符串比较。
代码如下:
#include <stdio.h>#include <string.h>#include <assert.h>char* mystrstr(const char* str1,const char* str2)//str1 is the original string { assert(str1 != NULL); if(str2 != NULL) return (char*)str1; while(str1 != ‘\0‘){ if(*str1 != *str2) str1++; else{ char* ori = str1; char* des = str2; while(*des != ‘\0‘){ if(*ori == *des){ ori++;des++; } else break; } if(*des == ‘\0‘) return str1; } } return NULL;}int main(){ char ori[]="sdggdfhhttyusdfge"; char des[]="ttyu"; char* ret=mystrstr(ori,des); printf("%s\n", ret); return 0;}
结果是
[root@admin Desktop]# ./a.out
ttyusdfge
方法2:
类似的方法,练练手:
#include <stdio.h>#include <string.h>char* mystrstr(const char* str1,const char* str2)//str1 is the original string { int len2 = strlen(str2); int len1 = strlen(str1); if(!len2) return (char*)str1; while(len1 >= len2){ len1--; if(!strcmp(str1,str2,len2)) return (char*)str1; str1++; } } return NULL;}int main(){ char ori[]="sdggdfhhttyusdfge"; char des[]="ttyu"; char* ret=mystrstr(ori,des); printf("%s\n", ret); return 0;}
结果是
[root@admin Desktop]# ./a.out
ttyusdfge
字符串子串查找strstr
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。