入力を無限に受け取るプログラムを作成しようとしています。入力シーケンスが与えられたパターンと一致すると、一致するものが見つかったとみなし、他のパターンのパターンを検索し続けます。この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)は非常に便利です。 –