c语言如何对字符串进行位置查询

Python013

c语言如何对字符串进行位置查询,第1张

包含文件:string.h

函数名: strstr

函数原型:

extern char *strstr(char *str1, const char *str2)

语法:* strstr(str1,str2)

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

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

返回值:若str2是str1的子串,则返回str2在str1的首次出现的地址;如果str2不是str1的子串,则返回NULL。

例子:

char str[]="1234xyz"

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

cout <<str1 <<endl

显示的是: 34xyz

函数实现

1.Copyright 1990 Software Development Systems, Inc.

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

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

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

{

const char*p=s1

const size_tlen=strlen(s2)

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

{

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

return (char*)p

}

return(0)

}

应用举例

// strstr.c

#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都是一个未知的字串)

char *s=”string1onexxxstring2oneyyy”

char *p

p=strstr(s,”yyy”)

if(p!=NULL)

printf(“%s”,p)

else

printf("notfound\n")

说明:如果直接写语句p=strstr(s,”one”),找到的是onexxxstring2oneyyy

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

}

第一空填:argv[1] //文件名以字符指针的形式存在argv[1]中

第二空填:fscanf(fp,"%s\n",str)//读取一行的字符串,存到str这个字符数组中去

第三空填:fclose(fp) //关闭文件