diff --git a/srcd/part1/ft_memmove.c b/srcd/part1/ft_memmove.c index 5ff017c..035b345 100644 --- a/srcd/part1/ft_memmove.c +++ b/srcd/part1/ft_memmove.c @@ -6,7 +6,7 @@ /* By: hulamy +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/11/25 13:56:25 by hulamy #+# #+# */ -/* Updated: 2019/11/25 13:56:29 by hulamy ### ########.fr */ +/* Updated: 2019/11/28 15:04:39 by hulamy ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,22 +14,55 @@ ** copy n characters from src to dst in a non destructive way and return dst */ +/* +** #include +** +** size_t ft_strlen(const char *str) +** { +** size_t i; +** +** i = 0; +** while (str[i]) +** i++; +** return (i); +** } +** +** void *ft_memmove(void *dst, const void *src, size_t len); +** +** //int main(int ac, char **av) +** int main(void) +** { +** char *src = "this is a good nyancat !\r\n"; +** char dst[0xF0]; +** int size = strlen(src); +** +** // if (ac == 4) +** // printf("%s\n", ft_memmove(av[1], av[2], atoi(av[3]))); +** +** ft_memmove(dst, src, size); +** printf("%s", dst); +** return (0); +** } +*/ + #include "libft.h" void *ft_memmove(void *dst, const void *src, size_t len) { - int i; - char *source; - char *dest; + size_t i; + char *cpsrc; + char *cpdst; i = -1; - source = (char *)src; - dest = (char *)dst; - if (source < dest) - while ((int)(--len) >= 0) - dest[len] = source[len]; + cpsrc = (char *)src; + cpdst = (char *)dst; + if (dst == src) + return (dst); + if (cpsrc < cpdst) + while (len--) + cpdst[len] = cpsrc[len]; else - while (++i < (int)len) - dest[i] = source[i]; + while (++i < len) + cpdst[i] = cpsrc[i]; return (dst); } diff --git a/srcs/ft_memmove.c b/srcs/ft_memmove.c index 5ff017c..3ac3db6 100644 --- a/srcs/ft_memmove.c +++ b/srcs/ft_memmove.c @@ -6,7 +6,7 @@ /* By: hulamy +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/11/25 13:56:25 by hulamy #+# #+# */ -/* Updated: 2019/11/25 13:56:29 by hulamy ### ########.fr */ +/* Updated: 2019/11/28 14:57:58 by hulamy ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,18 +18,20 @@ void *ft_memmove(void *dst, const void *src, size_t len) { - int i; - char *source; - char *dest; + size_t i; + char *cpsrc; + char *cpdst; i = -1; - source = (char *)src; - dest = (char *)dst; - if (source < dest) - while ((int)(--len) >= 0) - dest[len] = source[len]; + cpsrc = (char *)src; + cpdst = (char *)dst; + if (dst == src) + return (dst); + if (cpsrc < cpdst) + while (len--) + cpdst[len] = cpsrc[len]; else - while (++i < (int)len) - dest[i] = source[i]; + while (++i < len) + cpdst[i] = cpsrc[i]; return (dst); }