C언어 header/string.h
memrchr(3) - 1바이트의 데이터 역순 찾기(GNU only)
자연&사람
2019. 9. 25. 22:56
반응형
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;
}
반응형