[C] memmove / memmove.c / memmove in c

2022. 7. 6. 22:09🧑🏻‍💻/C & C++

man memmove

DESCRIPTION memmove() 함수는 문자열 src에서 문자열 dst로 len 바이트를 복사합니다. 두 문자열이 겹칠 수 있습니다. 
복사는 항상 비파괴적인 방식으로 수행됩니다.

 

변수명 설명
void *dst 복사되는 메모리 주소
const void *src 복사할 메모리 주소
size_t n 복사할 길이 (byte 단위)

 

return   
성공 dst의 메모리 시작 주소.
실패 NULL

 

void	*memmove(void *dst, const void *src, size_t n)
{
	unsigned char	*p_dst;
	unsigned char	*p_src;
	size_t			i;

	if (n == 0 || dst == src)
		return (dst);
	i = 0;
	p_dst = dst;
	p_src = (unsigned char *)src;
	if (dst < src)
	{
		while (i++ < n)
			*p_dst++ = *p_src++;
	}
	else
	{
		while (i < n)
		{
			p_dst[n - i - 1] = p_src[n - i - 1];
			i++;
		}
	}
	return (dst);
}