请编写C程序,实现串的模式匹配。要求:若非空串t是串s的子串,则返回值为s中第一个这样的子串在主串中的位置,否则返回值为零。
时间: 2024-05-02 10:23:25 浏览: 15
好的,以下是实现串的模式匹配的C程序:
```c
#include <stdio.h>
#include <string.h>
int match(char *s, char *t)
{
int i, j, k;
int slen = strlen(s);
int tlen = strlen(t);
for (i = 0; i <= slen - tlen; i++) {
for (j = i, k = 0; k < tlen && s[j] == t[k]; j++, k++);
if (k == tlen) {
return i + 1;
}
}
return 0;
}
int main()
{
char s[] = "hello world";
char t[] = "world";
int pos = match(s, t);
if (pos) {
printf("匹配成功,子串在主串中的位置是:%d\n", pos);
} else {
printf("匹配失败\n");
}
return 0;
}
```
在主函数中,我们定义了一个主串`s`和一个子串`t`,然后调用`match`函数进行匹配,如果匹配成功,就返回子串在主串中的位置,否则返回0。函数中使用了两个循环,第一个循环控制主串的扫描范围,第二个循环用于比较主串和子串的每个字符是否相等。如果子串中的所有字符都与主串中的对应字符相等,就说明匹配成功了,返回子串在主串中的位置。