strstr函数c语言库函数_C语言中strstr()函数的使用分析

本文详细介绍了C语言中的strstr()函数,用于查找字符串str2是否是str1的子串。文章提供多种实现方式,并通过实例演示了函数的使用,帮助读者深入理解strstr()的功能。
摘要由CSDN通过智能技术生成

C语言中strstr()函数的使用分析

strstr() 函数搜索一个字符串在另一个字符串中的第一次出现,用于判断字符串str2是否是str1的子串。以下是百分网小编搜索整理的关于C语言中strstr()函数的使用分析,供参考借鉴,希望对大家有所帮助!想了解更多相关信息请持续关注我们应届毕业生考试网!

原型:char *strstr(const char *str1, const char *str2);

#include

找出str2字符串在str1字符串中第一次出现的`位置(不包括str2的串结束符)。返回该位置的指针,如找不到,返回空指针。

Returns a pointer to the first occurrence of strSearch in str, or NULL if strSearch does not appear in str. IfstrSearch points to a string of zero length, the function returns str.

代码如下:

#include

#include

#include

#include

#pragma warning (disable:4996)

char *mystrstr(char *s1,char *s2);

int main(void)

{

char *s="Golden Global View";

char *l="ob";   //char *l=""

char *p;

system("cls");

p=mystrstr(s,l);

if (p!=NULL)

{

printf("%sn",p);

}

else

{

printf("Not Found!n");

}

getch();

return 0;

}

/*FROM 百科*/

char *mystrstr(char *s1,char *s2)

{

int n;

if (*s2)                      //两种情况考虑

{

while(*s1)

{

for (n=0;*(s1+n)==*(s2+n);n++)

{

if (!*(s2+n+1))            //查找的下一个字符是否为''

{

return (char*)s1;

}

}

s1++;

}

return NULL;

}

else

{

return (char*)s1;

}

}

另一个实现:

代码如下:

char *  strstr (buf, sub)

register char *buf;

register char *sub;

{

register char *bp;

register char *sp;

if (!*sub)

return buf;

while (*buf)

{

bp = buf;

sp = sub;

do {

if (!*sp)

return buf;

} while (*bp++ == *sp++);

buf += 1;

}

return 0;

}

又一个实现:

代码如下:

#include

#include

using namespace std;

//c语言实现strstr

const char* isSub(const char* str, const char *subs){

//特殊情况

if(!*subs)

return str;

const char* tmp=str;

while (*tmp!='')

{

//用于每次将父串向后移动一个字符

const char* tmp1=tmp;

//记录子串地址

const char* sub1=subs;

while (*sub1!=''&&*tmp1!='')

{

//若不相等则跳出,将父串后移一个字符

if (*sub1!=*tmp1)

break;

//若相等且子串下一个字符是末尾则是这个父串的子串

if (*sub1==*tmp1&&*(sub1+1)=='')

return tmp;

//若相等则继续比较下一个字符

if (*sub1==*tmp1)

{

sub1++;

tmp1++;

}

}

tmp++;

}

return NULL;

}

int main(){

char* str1="ababcdddb";

char* str="";

const char *res=isSub(str1,str);

if (res!=NULL)

{

cout << res << endl;

}

else

cout << "null" << endl;

//cout << isSub(str1,str) << endl;

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值