#include <stdio.h> #include <stdlib.h> int Index_BF(char S[],char T[])//s为目标串(长串),t为模式串(可能为子串) { int i = 0,j,k; int m = 0; int flag; int lens,lent; int pos[100]; while(S[i] != '') { i++; } lens = i; // printf("字符串S的长度为:%d ",lens); i = 0; while(T[i] != '') { i++; } lent = i; // printf("字符串T的长度为:%d ",lent); for(i = 0;i < lens;i++) { k = i;//第i个字符开始 flag = 0; j = 0; if(k > lens-lent) { break; } else { while(j < lent) { if(T[j] == S[k]) { flag++; } j++; k++; } if(flag == lent) { pos[m++] = i; // m++; } } } if(m > 0) { printf("匹配过程完毕,串T是串S的子串: "); for(i = 0;i < m;i++ ) { printf("开始字符在串S中的下标为: %d ",pos[i]); } } else { printf("匹配过程完毕,串T不是串S的子串: "); } return 0; } int main() { char S[100],T[99]; int pos; printf("请输入字符串S: "); scanf("%s",S); printf("请输入字符串T: "); scanf("%s",T); Index_BF(S,T); return 0; }