1.Copyright 1990 Software Development Systems,Inc
char *strstr(const char *s1, const char *s2){int len2;if( !(len2 = strlen(s2)) )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 rightsreservedchar *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;}elsereturn (char *)s1;}
举例
//strstr.c#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("NotFound!");
getchar();
return0;
} 语法:*strstr(str1,str2)
str1:被查找目标 string expression to search.
str2:要查找对象 Thestring expression to find.
该函数返回str2第一次在str1中的位置,如果没有找到,返回NULL
Thestrstr() function returns the ordinal position within str1 of thefirst occurrence of str2. If str2 is not found in str1, strstr()returns 0.
例子:
功能:从字串”string1 onexxx string2 oneyyy”中寻找”yyy”
(假设xxx和yyy都是一个未知的字串)
char*s=” string1 onexxx string2 oneyyy”;
char*p;
p=strstr(s,”string2”);
if(p==NULL)printf(“Not Found!”);
p=strstr(p,”one”);
if(p==NULL)printf(“Not Found!”);
p+=strlen(“one”);
printf(“%s”,p);
说明:如果直接写语句p=strstr(s,”one”),则找到的是onexxxstring2 oneyyy,不符合要求
所以需采用二次查找法找到目标
实现
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;
}