博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
字符串子串查找strstr
阅读量:6985 次
发布时间:2019-06-27

本文共 1715 字,大约阅读时间需要 5 分钟。

问题:

函数名: 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 
#include
#include
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 
#include
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

 

转载于:https://www.cnblogs.com/McQueen1987/p/3940526.html

你可能感兴趣的文章
2017 Multi-University Training Contest - Team 9 1002&&HDU 6162 Ch’s gift【树链部分+线段树】...
查看>>
4.5. Rspamd
查看>>
ArcMap中的名称冲突问题
查看>>
(转) 一张图解AlphaGo原理及弱点
查看>>
美联邦调查局 FBI 网站被黑,数千特工信息泄露
查看>>
掉电引起的ORA-1172错误解决过程(二)
查看>>
在网站建设过程中主要在哪几个方面为后期的网站优打好根基?
查看>>
【MOS】RAC 环境中最常见的 5 个数据库和/或实例性能问题 (文档 ID 1602076.1)
查看>>
新年图书整理和相关的产品
查看>>
Struts2的核心文件
查看>>
Spring Boot集成Jasypt安全框架
查看>>
GIS基础软件及操作(十)
查看>>
HDOJ 2041 超级楼梯
查看>>
1108File Space Bitmap Block损坏能修复吗2
查看>>
遭遇DBD::mysql::dr::imp_data_size unexpectedly
查看>>
人人都会设计模式:03-策略模式--Strategy
查看>>
被忽视但很实用的那部分SQL
查看>>
解读阿里云oss-android/ios-sdk 断点续传(多线程)
查看>>
ML之监督学习算法之分类算法一 ——— 决策树算法
查看>>
骡夫电商地址
查看>>