暴力匹配字符串算法(纯C实现)

#include <stdio.h>
#include <stdlib.h>

int main()
{
    system("title 暴力匹配字符串算法!!!!");
    system("color 4");
    char src[] = "this is TV and GameBoy!!!";
    char str[] = "GameBoy";
    int lenSrc = 0;//src字符串的索引变量
    int lenStr = 0;//str字符串的索引变量
    while (src[lenSrc]!='\0') { //只要src里面的字符!=终止符 执行代码
            if(src[lenSrc] == str[lenStr]){ //如果字符==
                lenSrc++;// src 索引++
                lenStr++;// str 索引++
                //如果lenStr == str总容量的大小-1 说明 他移动到了末尾 那就说明找到了
                if(lenStr == sizeof(str)-1){
                    //表示找到
                    printf("src中包含[%s],在src的%d中\n",str,lenSrc-lenStr);
                    /**
                      * lenSrc 的位置是在y后一个 就是空格 索引是 15
                      * lenStr 的位置是 7
                      *  15 - 7 = 8
                      */
                     //以下代码 就是把匹配到的字符串截取出来
                     int i = lenSrc-lenStr;//求出G的第一个字符索引 8
                     int res = i+sizeof(str)-1;// 8 + 7  =  15
                       for(i;i<res;i++){ // 8 到 15 = 循环七次 刚好是GameBoy
                        printf("%c",src[i]);
                       }
                        printf("\n");
                    break;
                }
            }else{
                //  src的索引 回溯到 第一个字符匹配到的下一个字符 那个索引
                lenSrc = (lenSrc-lenStr)+1;
                lenStr = 0;//把需要匹配的字符串 设置0 src继续和str的第0个匹配
            }
    }
    return 0;
}

运行结果 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值