src에서 dst로 l크기만큼의 메모리를 복사하는 함수
memcpy와는 다르게 src와 dst가 인접해있는 메모리라도 가능하다
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);
}