스트링 검색 알고리즘(직선적, 라빈-카프, 직선적 파일에서 찾기)
- 최초 등록일
- 2009.02.03
- 최종 저작일
- 2008.11
- 10페이지/ 한컴오피스
- 가격 3,000원
소개글
스트링 검색 알고리즘 C로 작성
목차
1. 직선적 알고리즘
2. 라빈-카프 알고리즘
3. 직선적 알고리즘을 이용한 파일에서 문자열 패턴 찾기
본문내용
1. 직선적 알고리즘
#include <stdio.h>
#include <string.h>
void StringMatching(char T[], char P[], int n, int m); //직선적 스트링매칭 함수
void printarray(char* a); // 문자열 출력함수
void main()
{
char T[] = abacabacabacabababbacaabbcabac; //값을 찾을 DATA
char P[] = bac; //찾을 Pattern
printf( Number : );
for(int a=0; a<strlen(T); a++){ //strlen(T) : T배열의 길이를 구하는 함수
printf(%2d,a);
}
printf(n Data : );
printarray(T);
printf(nPattern : );
printarray(P);
printf(nn);
StringMatching(T, P, strlen(T), strlen(P));
}
/* 입력 : T : 텍스트, 크기가 n인 문자의 배열
P : 패턴, 크기가 m인 문자의 배열
출력 : 텍스트 패턴이 존재하는 위치
*/
void StringMatching(char T[], char P[], int n, int m)
{
// i, j 반복문에서 사용
int i, j;
// DATA의 전체 길이에서 패턴의 길이를 뺀 만큼 반복 하여 처음부터 탐색
for(i=0; i<= n-m; i++) {
for(j=0; j<m; j++) { // 패턴의 길이만큰 탐색
if(P[j] != T[i+j]) break; // 패턴과 값이 다르면 DATA의 다음부분으로
}
//DATA와 패턴의 일치하는 부분의 위치를 출력
if(j==m) printf(패턴이 텍스트의 %2d번째 문자부터 나타남n, i+1);
}
}
//문자열 a를 화면에 출력하는 함수
void printarray(char* a){
for(int i=0; i<strlen(a); i++){
printf(%2c,a[i]);
}
}
참고 자료
없음