基于c语言的kmp算法实现字符串查找,从键盘上输入目标串和模式串,判断目标串是否包括模式串。如果没有则输出-1,如果有则输出模式串在目标串中的起始位置
时间: 2024-10-16 16:03:27 浏览: 35
要在C语言中基于KMP算法实现字符串查找,首先需要编写用户界面来接收用户输入的目标串(text)和模式串(pattern)。这里是一个基本的例子,展示了如何获取输入并应用KMP算法来查找模式串在目标串中的位置:
```c
#include <stdio.h>
#include <string.h>
// KMP函数如上所述
int get_prefix_function(char *pattern, int n);
void kmp_search(char *text, char *pattern);
int main() {
char text[100], pattern[100];
printf("Enter the target string: ");
fgets(text, sizeof(text), stdin); // 跳过换行符
text[strlen(text) - 1] = '\0'; // 删除fgets添加的换行符
printf("Enter the pattern to search: ");
fgets(pattern, sizeof(pattern), stdin);
pattern[strlen(pattern) - 1] = '\0';
int pattern_len = strlen(pattern);
int text_len = strlen(text);
// 检查是否包含模式串
int position = kmp_search(text, pattern, text_len, pattern_len);
if (position == -1) {
printf("Pattern '%s' not found in the target string '%s'.\n", pattern, text);
} else {
printf("Pattern '%s' found at index %d in the target string '%s'.\n", pattern, position, text);
}
return 0;
}
// KMP函数实现...
```
在这个例子中,`main()`函数负责获取用户输入,并调用`kmp_search()`函数来进行查找。如果找不到模式串,程序会输出相应的提示。如果找到,则输出模式串在目标串中的起始位置。
阅读全文