请编写C程序,实现串的模式匹配。 要求:若非空串t是串s的子串,则返回值为s中第一个这样的子串在主串中的位置,否则返回值为零。
时间: 2023-06-12 21:05:15 浏览: 86
串的模式匹配算法(C#版)
4星 · 用户满意度95%
以下是实现串的模式匹配的C语言代码:
```c
#include <stdio.h>
#include <string.h>
int match(char *s, char *t) {
int s_len = strlen(s);
int t_len = strlen(t);
int i, j, k;
for (i = 0; i <= s_len - t_len; i++) {
for (j = 0, k = i; j < t_len && s[k] == t[j]; j++, k++);
if (j == t_len) {
return i + 1;
}
}
return 0;
}
int main() {
char s[100], t[100];
int index;
printf("请输入主串:");
scanf("%s", s);
printf("请输入子串:");
scanf("%s", t);
index = match(s, t);
if (index) {
printf("子串在主串中的位置是:%d\n", index);
} else {
printf("主串中不存在该子串。\n");
}
return 0;
}
```
代码中,我们首先获取主串`s`和子串`t`,然后通过两层循环进行匹配。在内层循环中,我们通过`j`和`k`两个变量分别遍历子串`t`和主串`s`的一部分,如果它们匹配,就继续往下匹配;否则跳出循环进行下一次匹配。在匹配完成之后,如果子串`t`完全匹配主串`s`中的某一部分,就返回这部分的起始位置,否则返回0表示匹配失败。
阅读全文