网站首页 语言 会计 电脑 医学 资格证 职场 文艺体育 范文
当前位置:书香门第 > 计算机 > C语言

C语言入门知识:strstr函数

栏目: C语言 / 发布于: / 人气:1.46W

导语:strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。下面是C语言strstr函数知识,欢迎阅读:

C语言入门知识:strstr函数

  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

 函数实现

right 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;

}

right 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

#include

main()

{

char *s="GoldenGlobalView";

char *l="lob";

char *p;

clrscr();

p=strstr(s,l);

if(p)

printf("%s",p);

else

printf("NotFound!");

get);

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");

说明:如果直接写语句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;

}