ft_memmove

jen133·2022년 1월 7일
0

libft

목록 보기
13/44

💻 ft_memmove

src에서 dst로 l크기만큼의 메모리를 복사하는 함수
memcpy와는 다르게 src와 dst가 인접해있는 메모리라도 가능하다

📃 ft_memmove 원형

void	*ft_memmove(void *dst, const void *src, size_t l)

🔩 parameters

*dst : 복사될 문자열의 주소
*src : 복사할 문자열의 주소
ㅣ : 복사할 크기

📬 return

void* 형 반환

  • 복사를 완료한 dst를 반환

🧨 주의사항

  • 만약 dst < src라면 앞에서부터 복사해야 dst가 src에 있는 앞쪽 값을 건들지않기때문에 순차적으로 복사
  • dst >= src라면 뒤에서부터 복사해야 dst가 src에 있는 뒤쪽 값을 건들지 않기때문에 뒤에서부터 복사

⌨ 코드


#include "libft.h"

void	*ft_memmove(void *dst, const void *src, size_t l)
{
	size_t	i;
	int		pos;

	i = 0;
	if (src == NULL && dst == NULL)
		return (dst);
	if (dst < src)
	{
		while (i < l)
		{
			((unsigned char *)dst)[i] = ((unsigned char *)src)[i];
			i++;
		}
	}
	else
	{
		while (i < l)
		{
			pos = l - 1 - i;
			((unsigned char *)dst)[pos] = ((unsigned char *)src)[pos];
			i++;
		}
	}
	return (dst);
}

profile
늅늅

0개의 댓글