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)非常有用。 –