算法思想:从主串S的第pos个字符下标开始,与模式串T的第一个字符开始比较,如果相同则继续比较下一个字符,反之从主串S从pos+1个字符开始比较,模式串T重新从第一个字符开始比较直到,模式串T与S串连续的字串完全相同,则返回S的下标pos。
代码:
1.定义结构体:
#define Max 40
typedef struct {
char str[Max];
int len;
}SString;
2.创建顺序串:
void creatSString(SString *S)
{
S->len = 0;
printf("请输入字符串\n");
scanf("%s", S->str); int i = 0;
while (S->str[i]!='\0')
{
S->len++;
i++;
}
}
3.顺序串的简单匹配方式:、
int strIndex(SString S, int pos, SString T)
{
if (pos<0 && pos>S.len)
return 0;
int j = 0, start = pos,i=start;
while (j!=T.len&&i!=S.len)
{
if (S.str[i] == T.str[j])
{
i++; j++;
}
else
{
start++;
i = start;
j = 0;
}
}
if (j >= T.len)
return start;
}
4.主函数实现:
int main()
{
SString S1, S2;
creatSString(&S1);
creatSString(&S2);
int a = strIndex(S1, 2, S2);
printf("%d", a);
}