본문 바로가기
프로그래밍/C·C++

strrstr 함수 구현 (문자열 역순 탐색 함수)

by ITPro 2011. 7. 20.
-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
프로세스 리스트 얻기  (0) 2011.07.04
프로세스 제거하기  (0) 2011.07.04
프로세스 생성하기  (0) 2011.07.04