/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* ft_memmove.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: kcolin +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/10/15 13:57:12 by kcolin #+# #+# */ /* Updated: 2024/10/15 14:39:52 by kcolin ### ########.fr */ /* */ /* ************************************************************************** */ #include "libft.h" /* * case 1: dest overlaps at start of src. * src is before dest. * copy back to front * * case 2: dest overlaps at beginning of src. * src is after dest. * copy front to back. * * case 3: dest and src do not overlap * it doesn't matter how the data is copied * merge with case 2 */ void *ft_memmove(void *dest, const void *src, t_size n) { t_size i; if (dest >= src && dest <= (src + n)) { i = n; while (i > 0) { i--; ((char *)dest)[i] = ((char *)src)[i]; } } else { ft_memcpy(dest, src, n); } return (dest); }