From aa24497045a04852f1164819c12e0dca75619b73 Mon Sep 17 00:00:00 2001 From: David Gailleton Date: Sun, 9 Nov 2025 20:16:25 +0100 Subject: [PATCH] memcpy and memmove fix --- ft_memcpy.c | 14 ++++++++++---- ft_memmove.c | 21 +++++++++++---------- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/ft_memcpy.c b/ft_memcpy.c index 4144b38..17897c7 100644 --- a/ft_memcpy.c +++ b/ft_memcpy.c @@ -6,7 +6,7 @@ /* By: dgaillet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/11/05 11:46:16 by dgaillet #+# #+# */ -/* Updated: 2025/11/05 17:02:06 by dgaillet ### ########lyon.fr */ +/* Updated: 2025/11/09 20:00:45 by dgaillet ### ########lyon.fr */ /* */ /* ************************************************************************** */ @@ -14,9 +14,15 @@ void *ft_memcpy(void *dest, const void *src, size_t n) { - if (n <= 0) + size_t i; + + if (!dest && !src) return (dest); - *((unsigned char *) dest) = *((unsigned char *) src); - ft_memcpy(dest + 1, src + 1, n - 1); + i = 0; + while (i < n) + { + ((unsigned char *) dest)[i] = ((unsigned char *) src)[i]; + i++; + } return (dest); } diff --git a/ft_memmove.c b/ft_memmove.c index 1eb4a0b..0603738 100644 --- a/ft_memmove.c +++ b/ft_memmove.c @@ -6,28 +6,29 @@ /* By: dgaillet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/11/05 13:17:42 by dgaillet #+# #+# */ -/* Updated: 2025/11/06 12:01:28 by dgaillet ### ########lyon.fr */ +/* Updated: 2025/11/09 20:15:29 by dgaillet ### ########lyon.fr */ /* */ /* ************************************************************************** */ #include "libft.h" -void *ft_rev_memcpy(void *dest, const void *src, size_t n) +static void *ft_rev_memcpy(void *dest, const void *src, size_t n) { - if (n <= 0) - { + if ((!dest && !src) || n == 0) return (dest); + n--; + while (n > 0) + { + ((unsigned char *) dest)[n] = ((unsigned char *) src)[n]; + n--; } - *((char *) dest) = *((char *) src); - ft_rev_memcpy(dest - 1, src - 1, n - 1); + ((unsigned char *) dest)[n] = ((unsigned char *) src)[n]; return (dest); } void *ft_memmove(void *dest, const void *src, size_t n) { if (dest < src) - ft_memcpy(dest, src, n); - else - ft_rev_memcpy(dest + (n - 1), src + (n - 1), n); - return (dest); + return (ft_memcpy(dest, src, n)); + return (ft_rev_memcpy(dest, src, n)); }