memchr

유제민·2025년 4월 10일

42경산

목록 보기
6/17

memchr 뭐예여

메모리의 버퍼 범위에서 특정 문자의 첫 번째 위치를 찾게 해주는 함수

함수 원형: void memchr(const void s, int c, size_t n)
const void *s: 특정 문자를 검색할 메모리
int c: 버퍼에서 검색할 문자
size_t count: 검색할 버퍼의 범위 (byte 단위)
반환값: 문자를 찾은 경우 (문자열에서 c의 첫번째 위치 포인터 반환)
문자를 못 찾은 경우 (NULL)

ft_memchr 구현하기

#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이면 세그폴트가 나는 것이 정상이라고 한다.
고로 그냥 터지게 냅두는게 맞다고 한다.

profile
무진장 게으른

0개의 댓글