天天看點

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