```c #include <stdio.h> #include <string.h> // 匹配函数 int match(char *s, char *t, int pos) { int i = pos; // 主串指针 int j = 0; // 模式串指针 while (s[i] && t[j]) { // 当主串和模式串都未结束 if (s[i] == t[j]) { // 若当前字符相等 printf("%c ", s[i]); // 输出当前比较的主串字符 i++; j++; } else { // 不相等 printf("%c ", s[i]); // 输出当前比较的主串字符 i = i - j + 1; // 主串指针回溯 j = 0; // 模式串指针归零 } } if (!t[j]) { // 模式串结束,匹配成功 return i - j + 1; // 返回匹配的序号(从 1 开始计数) } else { // 模式串未结束,匹配失败 return 0; } } int main() { char s[] = "hello world"; char t[] = "world"; int pos = 0; int result = match(s, t, pos); if (result) { printf("匹配成功,序号为:%d\n", result); } else { printf("匹配失败\n"); } return 0; } ``` 额外注意点: 1. 边界情况的处理,比如主串或模式串为空的情况。 2. 对于字符的比较,要考虑大小写等特殊情况。 3. 代码的效率和优化,比如减少不必要的重复计算。 [2024-12-15 12:43:20 | AI写代码神器 | 415点数解答]