memrchr(3)

#include <string.h>

void *memrchr(const void *s, int c, size_t n);

memrchr(3)은 s 메모리 시작영역에서 n 바이트 사이에서 문자 c를 역순으로 처음 찾은 위치(pointer)를 return 합니다.

c의 값은 unsigned char 로 type casting한 것과 같습니다.(즉, 하위 1바이트만 유효) gcc(GNU)에서 추가된 함수이므로 일반 UNIX에서는 사용할 수 없습니다.

 

 

파라미터

s
    - 데이터를 찾을 범위의 시작 위치
c
    - 찾을 데이터 값(unsigned char)
n
    - s로 부터 찾을 범위에 대한 크기(byte수)

 

RETURN

NULL
    - s에서 n바이트까지 뒤에서 부터 검색한 결과 c문자를 발견하지 못하였습니다.

NULL이 아님
    - s에서 n바이트까지 뒤에서 부터 검색한 결과 처음으로 c문자를 발견한 위치(pointer)

 


대체 함수

 

Sample : memrchr(3)이 제공하지 않는 일반 UNIX에서 사용할 수 있는 함수

void *memrchr(const void *s, int c, size_t n)
{
    char *ptr = (char *)s + n - 1;
    
    do {
        if(*ptr == (char)c) {
            return ptr;
        } 
        
        ptr--;
    } while(s <= ptr);
    
    return NULL;
}
블로그 이미지

사용자 자연&사람

행복한 개발자 programmer since 1995.

댓글을 달아 주세요