写一个函数,模拟strstr()函数

思路:

1 外层循环依次遍历长串,判断长串的某字符是否和短串的第一个字符相等

 2 如果相等,记录保存长串字符的位置,令temp=i,则长串和短串继续后移比较,直到短串到达末位,此时返回temp为起始地址的字符长串

否则将i=temp;继续进行外层循环

3外层循环遍历完都没找到,则返回NULL;

//写一个函数,模拟strstr()函数,strstr()函数主要将主串中子串
//以及以后的字符全部返回。比如主串是12345678,子串时234,那么返回2345678
#include<iostream>
using namespace std;
const char*strst1(const char* string,const char* strCharSet){
 for(int i=0;string[i]!='\0';i++){  //依次进行大串遍历
  int temp;
  temp=i;  //做标记和传递作用
  int j=0;
  while(string[i]==strCharSet[j]){
   i++;
   j++;
   if(strCharSet[j]=='\0'){
    return &string[temp]; //遍历比较完成,则返回起始位置到串尾的组成的串
   }

  }
  i=temp;
 }
 return NULL;
}
int main(){
 
 char*string="12345678";
 char strCharSet[10]={};
 cin>>strCharSet;   //输入如果大于等于10则,内存错误
 const char *p=strst1(string,strCharSet);
 if(p!=NULL){
  cout<<p<<endl;
 }
 else
  cout<<"no exist!"<<endl;
 return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值