c语言库函数【string.h】之strstr_(char *s1, char *s2)
代码如下:
#include<assert.h>
#include<stdio.h>
//在串中查找指定字符串的第一次出现
char * strstr_(char *s1, char *s2)
{
if( s1 == NULL || s2 == NULL || *s1== '/0' || *s2 == '/0')
return (char *) NULL;
char * p1=s1;
char * p2=s2;
while(*s1)//遍历s1
{
//i=0;
p1=s1;//p1指向当前s1字符
p2=s2;//p2指向s2首字符
while(*p1 == *p2 && *p1 && *p2)//匹配字串
{
p1++;
p2++;
}
if(*p2=='/0')//如果p2指向s2末尾,则说明在s1中匹配s2成功
{
return s1;
}
s1++;//s1指向下一个字符
}
return (char *) NULL;
}
//在串中查找指定字符串的第一次出现,返回位置
int strstri_(char * str1,char * str2)
{
if( str1 == NULL || str2 == NULL || *str1== '/0' || *str2 == '/0')
return -1;//abcd b
char * start=str1;
char * p1=str1;
char * p2=str2;
while(*str1)//遍历s1
{
p1=str1;//p1指向当前s1字符
p2=str2;//p2指向s2首字符
while(*p1 == *p2 && *p1 && *p2)//匹配字串
{
p1++;
p2++;
}
if(*p2=='/0')//如果p2指向s2末尾,则说明匹配字串成功
{
return str1-start;
}
str1++;//s1指向下一个字符
}
return -1;
}