
包含文件:string.h
函数名: strstr
函数原型:extern char *strstr(char *str1, char *str2);
功能:找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)。
返回值:返回该位置的指针,如找不到,返回空指针。strstr
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;
}
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;
}
举例
//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('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 ofthe first 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”),则找到的是onexxx string2oneyyy,不符合要求
所以需采用二次查找法找到目标 实现 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://www.pc-fly.com/a/ruanjian/article-43883-1.html
期待你更好的作品