子串定位C语言

搜索某一段文字中,是否有一个目标子串。

这是串的一种重要操作,很多软件,若有“编辑”菜单项的话,则其中必有“查找”子菜单项。 首先,回忆一下串匹配(查找)的定义: INDEX (S, T, pos) 初始条件:串S和T存在,T是非空串,1≤pos≤StrLength(S)。 操作结果:若主串S中存在和串T值相同的子串, 则返回它在主串S中第pos个字符之后第一次出现的位置; 否则函数值为0。 如果想搜索某一段文字中的目标子串,最有效的方法是遍历文本中的所有字符来在每个位置检查其是否是目标。

模式匹配算法基本思想是:从目标串s="s0s1s2…sn-1"的第i个字符起与模式串t="t0t1t2…tm-1"进行比较。即从 j=0 起比较 s[i+j] 与 t[j],若相等,则在主串 s 中存在以i 为起始位置匹配成功的可能性,继续向后比较,直至与t串中最后一个字符相等为止。否则,改从s串第i个字符的下一个字符起重新开始进行下一轮的“匹配”,即将串t向后滑动一位(i增1,j退回至0),重新开始新一轮的匹配,直至串t中的每个字符依次和串s中的一个连续的字符序列相等,则称模式匹配成功,此时串t的第1个字符在串s中的位置就是t在s中的位置,否则模式匹配失败。

#include <stdio.h>

#include <string.h>

#define MaxSize 100     //串中最多字符个数

void DispStr(char *s);

int Index(char *s,char* t);

int main()

{   

    int

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JedonLee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值