strstr函数[转]

strstr函数[转]

strstr

编辑

从字符串str1中查找是否有字符串str2,如果有,从str1中的str2位置起,返回str1中str2起始位置的指针,如果没有,返回null。

目录

1函数概述

2函数实现

3应用举例

1函数概述

包含文件:string.h

函数名: strstr

函数原型:extern char *strstr(char *str1, char *str2);

返回值:返回该位置的指针,如找不到,返回空指针。

例子:

1

2

3

char str[]="1234 xyz";

char* str1=strstr(str,"34");

cout<<str1<<endl;

显示: 34 xyz

2函数实现

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

}

3. GCC-4.8.0

1

2

3

4

5

6

7

8

9

10

11

12

char *

 strstr (const char *s1, const char *s2)

 {

   const char *p = s1;

     const size_t len = strlen (s2);

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

   {

     if (strncmp (p, s2, len) == 0)

     return (char *)p;

    }

      return (0);

 }


  

3应用举例

// 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="Golden Global View";

  char *l="lob";

  char *p;

  clrscr();

  p=strstr(s,l);

  if(p)

    printf("%s",p);

  else

    printf("Not Found!");

  getchar();

  return 0;

}

语法:* strstr(str1,str2)

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

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

该函数返回str2第一次在str1中的位置,如果没有找到,返回NULL

The strstr() function returns the ordinal position within str1 of the first occurrence of str2. If str2 is not found in str1, strstr() returns 0.

例子:

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

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

1

2

3

4

5

char *s=” string1 onexxx string2 oneyyy”;

char *p;

p=strstr(s,”yyy”);

if(p==NULL) printf(“%s”,p);

else printf("not found\n");

说明:如果直接写语句p=strstr(s,”one”),则找到的是onexxx string2 oneyyy,不符合要求所以需采用二次查找法找到目标实现

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

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;

}

posted @ 2013-12-20 16:00 心灵捕手 阅读(...) 评论(...)  编辑 收藏

本文链接:https://my.lmcjl.com/post/7989.html

展开阅读全文

4 评论

留下您的评论.