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

#include <strings.h>
void bzero(void *s, size_t n);
bzero함수는 문자열 s에 n 바이트의 0을 쓴다. 만약 n이 0이면, bzeor()는 아무 것도 하지 않는다.역할이 앞의 memset 함수와 유사하다는 것을 볼 수 있다. 범용성 측면에서는 memset이 더 좋다는 것도 알 수 있다.
그렇기에 POSIX 표준에서는 bzero를 폐기하고 memset을 사용하는 것을 권장한다.
POSIX 표준이란 Portable Operating System Interface의 약자로 이식 가능한 운영 체제 인터페이스를 의미한다. 서로 다른 Unix 운영 체제들 간의 호환성을 보장하기 위해 표준화된 API를 제공한다.
그럼 폐기된 함수를 왜 구현하고 공부하는가에 대한 의문을 가질 수 있는데 이는 레거시 코드 이해를 위한 것이라고 볼 수 있다. 많은 기존 코드베이스, 특히 오래된 시스템이나 소프트웨어에서 bzero가 사용되고 있을 수 있고 이러한 코드를 유지보수하거나 디버깅할 때 bzero의 동작을 이해하는 것이 중요하기 때문이다.
방법1
void ft_bzero(void *s, size_t n)
{
unsigned char *str;
str = (unsigned char *) s;
while (n > 0)
{
*str = '\0';
str++;
n--;
}
}
방법2
void ft_bzero(void *s, size_t n)
{
unsigned char *str;
str = (unsigned char *) s;
while (n-- > 0)
*str++ = '\0';
}
방법3
bzero 함수가 memset함수와 유사하다는 점을 이용했다.void ft_bzero(void *s, size_t n)
{
ft_memset(s, 0, n); //이전 게시글에서 구현
}