C语言 百分网手机站

C语言入门知识:strstr函数

时间:2020-09-07 12:57:03 C语言 我要投稿

C语言入门知识:strstr函数

  导语: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

  函数实现

  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

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

  }


【C语言入门知识:strstr函数】相关文章:

C语言入门必备知识09-25

C语言函数 atoi()09-23

浅谈C语言函数09-21

关于C语言对函数11-20

C语言函数的含义10-04

C语言文件操作函数09-25

C语言入门例题讲解10-05

C语言入门常见错误09-30

C语言入门学习介绍09-21

C语言函数的声明以及函数原型10-05