C语言使用BF算法进行匹配,并输出主串内容、子串内容以及在主串中的匹配位置。
时间: 2023-11-22 18:55:48 浏览: 105
BF(Brute-Force)算法是一种朴素的字符串匹配算法,也被称为暴力匹配算法。其思想是从主串的第一个字符开始,依次和子串的每一个字符进行比较,如果全部匹配成功,则返回子串在主串中的位置;否则,主串的继续向后移动一个字符,重新开始匹配。
以下是使用C语言实现BF算法进行字符串匹配的代码:
```c
#include <stdio.h>
#include <string.h>
int bf_match(char* s, char* p)
{
int i = 0, j = 0;
int s_len = strlen(s);
int p_len = strlen(p);
while (i < s_len && j < p_len) {
if (s[i] == p[j]) {
i++;
j++;
} else {
i = i - j + 1;
j = 0;
}
}
if (j == p_len) {
return i - j;
} else {
return -1;
}
}
int main()
{
char s[100], p[100];
printf("请输入主串:");
fgets(s, 100, stdin);
printf("请输入子串:");
fgets(p, 100, stdin);
int pos = bf_match(s, p);
if (pos == -1) {
printf("未匹配到子串\n");
} else {
printf("主串内容:%s", s);
printf("子串内容:%s", p);
printf("匹配位置:%d\n", pos);
}
return 0;
}
```
在上面的代码中,我们定义了一个函数 `bf_match` 来实现 BF 算法进行字符串匹配。主要思路是使用两个指针 `i` 和 `j` 分别指向主串和子串的首字符,然后逐个比较字符。如果匹配成功,则两个指针都向后移动一位;如果匹配失败,则将主串的指针回退到上一次比较的位置加一位,子串的指针回到开头重新开始匹配。
最后,我们在主函数中读取用户输入的主串和子串,调用 `bf_match` 函数进行匹配,并输出主串内容、子串内容以及匹配位置。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231044937.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)