시작주소 *s부터 시작하여 n바이트만큼 탐색하면서 특정값 c가 있는지 찾아내는 함수
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);
}