c语言学习-自我实现my_strstr(const char* ,const char*);

c语言字符串中有一个函数叫:char* strstr(const char* firststring,const char* secondstring);
作用是检测字符串:firststring中是否包含了seconfstring,如果包含了返回第一次出现的指针,否则返回空指针。
闲来无事,自我实现一下这个函数:

	char *  my_strstr(const char* firststr,const char* secondstr){
		int i=0,j=0,loc;          //定义小标,用于循环遍历,loc用于保存第一次出现的位置 
		while(i<strlen(firststr)){     //遍历整个字符串 
			if(firststr[i] == secondstr[j]){     //如果出现相等的地方,开始判断之后的字符是否相等 
				loc = i;                        //记下当前位置,方便返回位置指针 
				while(j<strlen(secondstr)){
					i++,j++;
			     	if(firststr[i] == secondstr[j])
			     	continue;
			     	else 
			     	break;
			     
				}
				if(j == strlen(secondstr)-1)     //判断两个字符串对比的结果,如果下标j访问至结尾,那么字符串1包含串2 
				{
					return (firststr+loc);      //返回指针 
				}
				else                           //如果没有到结尾,那要更新小标 
				{ 
				    j=0;                      //j置0,方便下一次的再比较 
				    i=loc;                    //i置会原位,回溯 
				}  
			
			}//out if
		i++;
		}//while 
		if(i == strlen(firststr)-1)             //如果遍历完整个字符,都没有找到,返回空指针 
		return NULL;
	
		
	}
	

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
觉得有用,点个赞呗!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值