#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] != '\0') { i++; } lens = i; // printf("字符串S的长度为:%d\n",lens); i = 0; while(T[i] != '\0') { i++; } lent = i; // printf("字符串T的长度为:%d\n",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的子串: \n"); for(i = 0;i < m;i++ ) { printf("开始字符在串S中的下标为: %d \n",pos[i]); } } else { printf("匹配过程完毕,串T不是串S的子串: \n"); } return 0; } int main() { char S[100],T[99]; int pos; printf("请输入字符串S:\n"); scanf("%s",S); printf("请输入字符串T:\n"); scanf("%s",T); Index_BF(S,T); return 0; }
天道酬勤!