posted by 초식사자 2011.07.20 16:27
-strstr 함수와 유사하게 문자열을 탐색하나 역순으로 탐색한다.

#include <stdio.h>
#include <string.h>

char* strrstr(char* str,char* ptn){
        unsigned int ptnlen=0;
        unsigned int i=0;
        unsigned int j=0;
        char* offset=-1;

        //패턴 문자열 길이 획득 (인덱스로 사용하기 위해 1 감소)
        ptnlen=strlen(ptn)-1;

        //문자열의 오른쪽부터 비교 시작
        for(i=strlen(str)-1;i != 0;i--){
                //문자열의 현재 위치 문자가 패턴 문자열의 마지막 문자와 일치 하는지 확인
                if(str[i] == ptn[ptnlen]){
                        //패턴 문자열이 1 글자이면 오프셋 값 저장하고 리턴
                        if(ptnlen == 0){
                                offset=&str[i];
                                break;
                        }
                        //문자가 일치한다면 나머지 패턴도 일치하는지 확인
                        for(j=1;j<=strlen(ptn);j++){
                                //일치 하지 않으면 패턴 확인 중단
                                if(str[i-j] != ptn[ptnlen-j]){
                                        break;
                                }
                                //모두 일치하면 오프셋 값 저장 하고 리턴
                                if(j+1 == strlen(ptn)){
                                        offset=&str[i-j];
                                }
                        }
                }
        }

        //최종적으로 패턴 확인 실패시 NULL값 반환
        if(offset == -1){
                return NULL;
        }

        return offset;
}


'프로그래밍 > C/C++' 카테고리의 다른 글

VEH (Vectored Exception Handling)  (0) 2011.08.15
SEH(Structured Exception Handling)  (0) 2011.08.15
strrstr 함수 구현 (문자열 역순 탐색 함수)  (0) 2011.07.20
프로세스 리스트 얻기  (0) 2011.07.04
프로세스 제거하기  (0) 2011.07.04
프로세스 생성하기  (0) 2011.07.04

댓글을 달아 주세요