memchr 함수 구현하기

윤효준·2024년 8월 2일
0

42 Libft 복습

목록 보기
16/28

memchr 함수의 manual은 다음과 같다!

Synopsis

include <string.h>

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

Description

  • memchr 함수는 문자열 s에서 C(unsigned char 타입으로 변환된)의 첫 번째 발생 위치를 찾는다.

  • unsigned char로 변환하는 것을 보아 바이트 단위로 수행한다는 것을 예상할 수 있다. 왜냐하면 c 표준 라이브러리의 메모리 관련 함수들이 unsigned char 타입을 사용하여 바이트 단위의 데이터를 다루기 때문이다.

memchr와 strchr의 차이는???

  • strchr 함수는 문자열에서 문자를 검색하는 함수이다. 이 함수는 검색할 문자를 char 타입으로 변환하여 사용한다. 문자열의 끝을 나타내는 NULL 문자를 만나거나 검색할 문자를 찾으면 검색을 종료한다.

  • memchr 함수는 매뉴얼에서 문자열을 검색한다고 표현하지만, 실제로는 임의의 메모리 블록을 검색하는 함수이다. 이 함수는 검색할 값을 unsigned char 타입으로 변환하여 사용한다. 메모리 블록의 끝은 범위(n 바이트)로 지정되며, 지정된 n 바이트 내에서 검색을 진행한다.

Return Values

  • memchr함수는 n 바이트 내에서 c의 첫 번째 발생 위치를 가리키는 포인터를 반환한다. 만약 해당 바이트가 발견되지 않으면 NULL을 반환한다.

구현

void	*ft_memchr(const void *s, int c, size_t n)
{
	unsigned char	*str;
	unsigned char	check;

	str = (unsigned char *) s;
	check = (unsigned char) c;
	while (n > 0)
	{
		if (*str == check)
			return ((void *) str);
		str++;
		n--;
	}
	return (NULL);
}
profile
작은 문제를 하나하나 해결하며, 누군가의 하루에 선물이 되는 코드를 작성해 갑니다.

0개의 댓글