简单字符串查找
从字符串 t 查找子字符串 p 。
采用朴素的匹配算法。
返回子字符串第一次出现的位置,例如t="string ring",p="ring",则返回2。
若没有找到,则返回-1。
#include <stdio.h> #include <stdlib.h> int FindSubStr(char* t, char* p){ int i=1,j=0; int tl,lp; while(p[i]) i++; lp=i; i=1; while(t[i]) i++; tl=i; i=0; while(i<tl&&j<lp){ if(t[i]==p[j]){ j++; i++; } else{ i=i-j+1; j=0; } } if(j+1>lp) return i-lp; else return -1; } int main() { char t[20],p[20]; printf("请输入主串:"); scanf("%s",t); printf("请输入要测试的子串:"); scanf("%s",p); int flag; flag = FindSubStr(t, p); if(flag ==-1) printf("not found!\n"); else printf("匹配成功!匹配位置为 %d\n",flag); return 0; }