ft_memchr

J_JEON·2021년 12월 21일
1

libft

목록 보기
10/44

💻 ft_memchr

시작주소 *s부터 시작하여 n바이트만큼 탐색하면서 특정값 c가 있는지 찾아내는 함수

📃 ft_memchr 원형

void	*ft_memchr(const void *s, int c, size_t n)

🔩 parameters

*s : 찾기 시작할 주소값
c : 찾아야하는 문자
n : 탐색할 바이트 크기

📬 return

void *형 반환

  • s부터 시작하여 n만큼 탐색을 하던 중 c를 찾는다면 처음 c를 찾은 메모리의 포인터를 반환
  • c를 찾지못했다면 0 을 반환

🧨 주의사항

  • 메모리 주소를 사용할 시 음수값이 있으면 안되기때문에 unsigned로 사용하여야 함.
  • 찾아야하는 문자인 c는 int로 주어졌기때문에 unsigned char로 형변환하여 사용, 이때 unsigned를 사용하는 이유는 사용환경에따라 다르게 동작할 수 있기 때문.
  • 리턴값인 (&(char *)s)[i]는 s주소값을 char *형으로 형변환 한 뒤 i번째 인덱스의 주소를 반환하는것
    같은 의미로 (char *)s + i 도 가능, 이는 s주소값을 char *형으로 형변환 한 뒤 그 주소에 i 바이트만큼 추가하여 반환한다는 뜻

⌨ 코드


#include "libft.h"

void	*ft_memchr(const void *s, int c, size_t n)
{
	size_t	i;

	i = 0;
	while (i < n)
	{
		if (((unsigned char *)s)[i] == (unsigned char)c)
			return (&((char *)s)[i]);
		i++;
	}
	return (0);
}

profile
늅늅

0개의 댓글