模拟实训strstr,strrstr



模拟实训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;
}
大概就是这个样子了


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值