-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 |