天天看点

C语言中的strstr函数的用法「建议收藏」

大家好,又见面了,我是你们的朋友全栈君。

strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。

PHP语言函数

编辑

strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。

该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。

语法

1 strstr (string,search)

[1]

参数 描述
string 必需。规定被搜索的字符串。
search 必需。规定所搜索的字符串。

提示

注释:

search若是数字,所搜索的将是该数字(作为ASCII码)代表的字符。

注释:该函数是二进制安全的。

注释:该函数对大小写敏感。如需进行大小写不敏感的搜索,请使用 stristr()。

实例

1

<?php

echo

strstr

(

"Helloworld!"

,

"world"

);?>

输出:

1 world!

C语言函数

编辑

包含文件:

string.h

函数名: strstr

函数原型:

1 extern char * strstr ( char *str1, const char *str2);

语法:

1

*

strstr

(str1,str2)

str1: 被查找目标 string expression to search.

str2: 要查找对象 The string expression to find.

返回值:若str2是str1的子串,则返回str2在str1的首次出现的地址;如果str2不是str1的子串,则返回NULL。

例子:

1

2

3

char

str[]=

"1234xyz"

;

char

*str1=

strstr

(str,

"34"

);

cout << str1 << endl;

显示的是: 34xyz

函数实现

1.Copyright 1990 Software Development Systems, Inc.

1

2

3

4

5

6

7

8

9

10

11

12

char

*

strstr

(

const

char

*s1,

const

char

*s2)

{

 

int

len2;

 

if

(!(len2=

strlen

(s2)))

//此种情况下s2不能指向空,否则strlen无法测出长度,这条语句错误

 

return

(

char

*)s1;

 

for

(;*s1;++s1)

 {

 

if

(*s1==*s2 &&

strncmp

(s1,s2,len2)==0)

 

return

(

char

*)s1;

 }

 

return

NULL;

}

2.Copyright 1986 – 1999 IAR Systems. All rights reserved

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

char

*

strstr

(constchar*s1,constchar*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;

}

3. GCC-4.8.0

1

2

3

4

5

6

7

8

9

10

11

char

*

strstr

(

const

char

*s1,

const

char

*s2)

{

const

char

*p=s1;

const

size_tlen=

strlen

(s2);

for

(;(p=

strchr

(p,*s2))!=0;p++)

{

if

(

strncmp

(p,s2,len)==0)

return

(

char

*)p;

}

return

(0);

}

应用举例

// strstr.c

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

#include <syslib.h>

#include <string.h>

main()

{

char

*s=

"GoldenGlobalView"

;

char

*l=

"lob"

;

char

*p;

clrscr();

p=

strstr

(s,l);

if

(p)

printf

(

"%s"

,p);

else

printf

(

"NotFound!"

);

getchar

();

return0;

}

//功能:从字串” string1 onexxx string2 oneyyy”中寻找”yyy”

(假设xxx和yyy都是一个未知的字串)

1

2

3

4

5

6

7

char

*s=”string1onexxxstring2oneyyy”;

char

*p;

p=

strstr

(s,”yyy”);

if

(p!=NULL)

printf

(“%s”,p);

else

printf

(

"notfound\n"

);

说明:如果直接写语句p=strstr(s,”one”),找到的是onexxxstring2oneyyy

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

char

*mystrstr(

char

*s1,

char

*s2)

{

if

(*s1==0)

{

if

(*s2)

return

(

char

*)NULL;

return

(

char

*)s1;

}

while

(*s1)

{

int

i=0;

while

(1)

{

if

(s2[i]==0)

return

s1;

if

(s2[i]!=s1[i])

break

;

i++;

}

s1++;

}

return

(

char

*)NULL;

}

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/153021.html原文链接:https://javaforall.cn