#include #include 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; } |
strrstr 함수 구현 (문자열 역순 탐색 함수)
-strstr 함수와 유사하게 문자열을 탐색하나 역순으로 탐색한다.