设计一个程序实现串的基本模式匹配。所谓模式匹配,就是判断某个串是否是另一个已知串的子串。若果是其子串,则给出该子串的起始位置。如果不是,则返回-1。
时间: 2024-03-24 07:42:01 浏览: 20
好的,我可以帮你设计一个程序实现串的基本模式匹配。具体实现过程如下:
1. 首先输入两个字符串:主串和模式串。
2. 然后遍历主串中每一个字符,从当前字符开始,依次与模式串中的字符进行比较。
3. 如果当前字符与模式串中的字符相同,则继续比较下一个字符,直到模式串中的所有字符都匹配成功。
4. 如果匹配成功,返回主串中匹配成功的子串的起始位置,即当前字符的下标减去模式串长度。
5. 如果匹配失败,将主串中的指针移到下一个字符,重新开始匹配。
6. 如果主串中的所有字符都比较完了,仍然没有匹配成功,则返回-1。
下面是实现过程的代码示例:
```
#include <stdio.h>
#include <string.h>
int match(char* str, char* pattern)
{
int i, j, len1, len2;
len1 = strlen(str);
len2 = strlen(pattern);
for (i = 0; i <= len1 - len2; i++) {
for (j = 0; j < len2; j++) {
if (str[i+j] != pattern[j])
break;
}
if (j == len2)
return i;
}
return -1;
}
int main()
{
char str[100], pattern[100];
printf("请输入主串:\n");
scanf("%s", str);
printf("请输入模式串:\n");
scanf("%s", pattern);
int pos = match(str, pattern);
if (pos == -1)
printf("未找到匹配的子串!\n");
else
printf("匹配成功!匹配的子串起始位置为:%d\n", pos);
return 0;
}
```
你可以测试一下这个程序,输入不同的主串和模式串,观察输出结果。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)