ft_memset

jen133·2021년 12월 21일
0

libft

목록 보기
9/44

💻 ft_memset

메모리의 시작주소 *b부터 len바이트만큼의 메모리를 값c로 채워주는 함수

📃 ft_memset 원형

void	*ft_memset(void *b, int c, size_t len)

🔩 parameters

*b : c로 채워나갈 메모리 블록의 시작주소
c : 메모리를 채울 값
len : 채워야하는 바이트 크기

📬 return

void *형 반환

  • *b로부터 시작하여 len바이트만큼을 c로 채운 뒤 포인터 b를 반환

🧨 주의사항

  • 포인터는 주소값연산이기에 부호를 쓰지않아야한다, 때문에 unsigned로 사용하는것이 좋다.
    채울때 사용할 문자 c는 int형으로 받아왔지만 unsigned char로 형변환해줌, unsigned를 사용하지 않았을 시 사용환경에따라 다르게 동작할 수 있기때문에 unsigned를 사용함.
  • void *는 자료형이 정해지지않은 범용 포인터임, 따라서 어떤 자료형으로 된 포인터에도 void 포인터를 저장할 수 있음

⌨ 코드


#include "libft.h"

void	*ft_memset(void *b, int c, size_t len)
{
	char	*str;
	size_t	i;

	str = (unsigned char *)b;
	i = 0;
	while (i < len)
	{
		str[i] = (unsigned char)c;
		i++;
	}
	return (b);
}

profile
늅늅

0개의 댓글