본문 바로가기
42Seoul/libft

ft_bzero

by 하고싶은건많은놈 2023. 2. 16.

bzero?

#include <strings.h>

    void bzero(void *s, size_t n);

Linux manpage description

: The bzero() function erases the data in the n bytes of the memory starting at the location pointed to by s, by writing zeros (bytes containing '\0') to that area.

해석 및 부연설명

: memset과 똑같이 작동하지만 오로지 \0으로만 채울 수 있다. 다만 리턴값 없이 단순히 메모리를 0으로 초기화하는 용도인 듯 하다. deprecated(시대에 뒤쳐졌다는 의미) 되었으니 대신 memset을 사용하라고 한다.

ex)

int i = -1;
char str[] = "123456789";
bzero(str, 5 * sizeof(char));
while (++i < 10)
	printf("%c",str[i]);

코드 실행 결과

6789

의문점 및 생각해볼점

딱히 없다.


ft_bzero 구현

void	ft_bzero(void *ptr, size_t size)
{
	while (size-- > 0)
		*(unsigned char *)ptr++ = 0;
}

생각해보니 이미 만들어둔 memset을 활용하는 것도 가능해보인다.

void	ft_bzero(void *ptr, size_t size)
{
	ft_memset(ptr, 0, size))
}

'42Seoul > libft' 카테고리의 다른 글

ft_strlcat  (0) 2023.02.16
ft_strchr  (0) 2023.02.16
ft_memmove  (0) 2023.02.16
ft_memcpy  (0) 2023.02.16
ft_memset  (0) 2023.02.16

댓글