从字符串1中找出字符串2出现的位置以及个数

以前在写字符串查找的时候一直用指针直接操作,写完之后出了很多BUG ,比如 从aaaaaa中找aa,会找到6个,今天在教别人写这个的时候别人非要用数组,以前觉得数组写不太好操作,现在发现还是很好操作的,还可以消除很多BUG。

/****************************************

函数功能:查找str1中出现str2出现的次数 并计算第一次出现在str1中str2第一个单词和最后一个单词的下标
入口参数:str1:被查找字符串的指针 str2:需要查找的字符串 
***************************************/
int my_strstr(const char *str1,const char *str2,int *h,int *t)
{
        int len1 = strlen(str1);
        int len2 = strlen(str2);
        int i,j;
        int count = 0;
        int flag = 1;
//      printf("%d %d \n",len1,len2);


        for(i=0;i<len1;i++)
        {
                for(j=0;j<len2;j++)
                {
                        if(str1[i+j] != str2[j])
                                break;
                }
                if(j == len2)
                {
                        if(flag == 1)
                        {
                                *h = i;
                                *t = i+j-1;
                                flag = 0;
                                //printf("%d %d\n",i,i+j-1);
                        }
                        count++;
                        i = i+len2-1;    //如果找到 i要跳过len2   防止从 aaaaa 找 aa会出现重复的bug


                }
        }
        return count;
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值