개요
-
src를 num만큼 dest에 옮기는 함수
-
memcpy와는 다른 점이 있다.
-
dest < src라면 뒤에서부터 복사해야 제대로 복사된다.
앞에서부터 복사하면 '맨 앞의 값'만 복사되기 때문에 뒤에서부터 복사해야 한다.
-
dest >= src라면 앞에서부터 복사해야 제대로 복사된다.
뒤에서부터 복사하면 '맨 뒤의 값'만 복사되기 때문에 앞에서부터 복사해야 한다.
코드
c
#include "libft.h"
void *ft_memmove(void *dest, const void *src, size_t len)
{
unsigned char *dest2;
const unsigned char *src2;
size_t i;
dest2 = (unsigned char *)dest;
src2 = (const unsigned char *)src;
i = -1;
if (src2 < dest2)
{
src2 += len;
dest2 += len;
while (len > 0)
{
*--dest2 = *--src2;
len--;
}
}
else if (src2 != dest2)
while (++i < len)
*dest2++ = *src2++;
return (dest);
}