子串的定位操作通常称为串的模式匹配。以下算法中:S—主串,T—子串(模式串)字符数组存储从下标 1 开始,String[0] 记录字符数组长度。
#include <iostream> #include <stdio.h> #include <string> using namespace std; #define MAXSTRLEN 255 typedef unsigned char SString[MAXSTRLEN + 1]; int Index(SString S, SString T, int pos); //普通匹配算法 int Index_KMP(SString S, SString T, int pos); void get_next(SString T, int next[]); //获取下次比较的模式串的下标 void get_nextval(SString T, int nextval[]); //改进的模式串下标获取方法 int main () { char c, s[MAXSTRLEN], t[MAXSTRLEN]; SString S, T, next; int n, i, pos; do { cout<<"enter a string:"; cin >> s; for (i = 0; s[i] != '