模拟实训strstr,strrstr
首先我是个渣渣,本文仅限参考
1、strstr是一种函数,从字符串str1中查找是否有符串str2,如果有,从str1中的str2位置起,返回str1的指针,如果没有,返回null。
MSDN中举了这样的例子:
/* STRSTR.C */
#include <string.h>
#include <stdio.h>
char str[] = "lazy";
char string[] = "The quick brown dog jumps over the lazy fox";
char fmt1[] = " 1 2 3 4 5";
char fmt2[] = "12345678901234567890123456789012345678901234567890";
void main( void )
{
char *pdest;
int result;
printf( "String to be searched:\n\t%s\n", string );
printf( "\t%s\n\t%s\n\n", fmt1, fmt2 );
pdest = strstr( string, str );
result = pdest - string + 1;
if( pdest != NULL )
printf( "%s found at position %d\n\n", str, result );
else
printf( "%s not found\n", str );
}
看的人眼花缭乱,所以写了下面的模拟strstr供大家参考
char *my_strstr( char *one,char *two)
{
assert(one);
assert(two);
char*p=one;
char*s1=p;
char*s2=two;
while(*s1)
{
*s1=*p;
*s2=*two;
while((*s1!='\0')&&(*s2!='\0'))
{
if(*s1==*s2)
{
*s1++;
*s2++;
}
else
{
p++;
break ;
}
}
if(*s2='\0')
return p;
}
}
2、strrstr
同样需要知道strrstr是什么鬼
功 能: 在字符串中查找指定字符串最后一次出现的位置
用 法: char *strrstr(char *str1, char *str2);
模拟实现函数如下:
#include<stdio.h>
#include<stdlib.h>
char *my_strrstr( char*one, char*two)
{
int i;
for(i=0;one[i]!='\0';i++)
{
int tmp=i;
int j=0;
while(one[i++]==two[j++])
{
if(two[j]=='\0')
{
return &one[tmp];
}
}i=tmp;
}
return NULL;
}
int main()
{
char*str1="123456789";
char*str2="456";
printf("%s\n",my_strrstr(str1,str2));
system("pause");
return 0;
}
大概就是这个样子了