memchr 뭐예여
메모리의 버퍼 범위에서 특정 문자의 첫 번째 위치를 찾게 해주는 함수
함수 원형: void memchr(const void s, int c, size_t n)
const void *s: 특정 문자를 검색할 메모리
int c: 버퍼에서 검색할 문자
size_t count: 검색할 버퍼의 범위 (byte 단위)
반환값: 문자를 찾은 경우 (문자열에서 c의 첫번째 위치 포인터 반환)
문자를 못 찾은 경우 (NULL)
#include "libft.h"
void *ft_memchr(const void *s, int c, size_t n)
{
size_t i;
const unsigned char *str;
str = (const unsigned char *)s;
i = 0;
while (i < n)
{
if (str[i] == (unsigned char)c) // 찾았다면
return ((void *)&str[i]); // 해당 주소값 반환 (리턴 타입이 void니 타입 캐스팅)
i++;
}
return (NULL);
}
if (!s && n > 0)
return (NULL);
이라는 예외 처리를 하려고 했었다.(세그폴트로 터지니까)
그런데 man memcr을 보니 n > 0 이고 s == NULL이면 세그폴트가 나는 것이 정상이라고 한다.
고로 그냥 터지게 냅두는게 맞다고 한다.