1
我想写接收无限,每当输入序列匹配给定模式应该打印匹配已经发现并继续搜索模式的其他事件输入一个程序,我设法只是代码这C-模式匹配
#include<stdio.h>
#include<string.h>
int main(){
char ch;
char pattern[4]="1234";
int i=0;
while(1){
scanf(" %c",&ch);
if(ch==pattern[i]){
i+=1;
} else {
i = 0;
}
if (i == 4) {
printf("match found!\n");
i = 0;
}
//printf("%c",ch);
}
return 0;
}
问题是,此代码不处理像11234重复情况。
我的其他方式使用缓冲,它有一些错误
#include<stdio.h>
#include<string.h>
int main(){
char ch;
char pattern[4]="1234";
char buf[4] = "";
int i=0;
while(1){
scanf(" %c",&ch);
buf[i%4]=ch;
i++;
if(strcmp(pattern,buf)==0){
printf("Match found");
}
}
return 0;
}
帮我解决这个问题
https://en.wikipedia.org/wiki/String_searching_algorithm – Ryan
[完全字符串匹配算法](http://www-igm.univ-mlv.fr/~lecroq/string /index.html)非常有用。 –