C语言strstr函数

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

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://my.lmcjl.com/post/8000.html

展开阅读全文

4 评论

留下您的评论.