입력을 무한히받는 프로그램을 작성하려고하는데, 입력 시퀀스가 주어진 패턴과 일치 할 때마다 매치가 발견되었음을 출력하고 코드를 관리하는 다른 패턴을 계속 검색해야합니다 이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
[일치 문자열 일치 알고리즘] 그래서 다음 물품 /index.html)은 매우 유용합니다. –