0001 /****************************************************************************************** 0002 * Text : 0 1 2 . . . i i+1 . . . i+j . . n-1 0003 * ------------------------|-------------------|------------ 0004 * Pattern : 0 1 . . . j . . 0005 * |-------------------| 0006 ******************************************************************************************/ 0007 int match ( char* P, char* T ) { //串匹配算法(Brute-force-2) 0008 size_t n = strlen ( T ), i = 0; //文本串长度、与模式串首字符的对齐位置 0009 size_t m = strlen ( P ), j; //模式串长度、当前接受比对字符的位置 0010 for ( i = 0; i < n - m + 1; i++ ) { //文本串从第i个字符起,与 0011 for ( j = 0; j < m; j++ ) //模式串中对应的字符逐个比对 0012 if ( T[i + j] != P[j] ) break; //若失配,模式串整体右移一个字符,再做一轮比对 0013 if ( j >= m ) break; //找到匹配子串 0014 } 0015 return i; //如何通过返回值,判断匹配结果? 0016 }