#include #include void *ft_memmove(void *dst, const void *src, size_t n) { unsigned char *d = dst; const unsigned char *s = src; if (d == s || n == 0) return dst; if (d < s) { while (((uintptr_t)d % sizeof(size_t)) && n) { *d++ = *s++; n--; } while (n >= sizeof(size_t)) { *(size_t *)d = *(const size_t *)s; d += sizeof(size_t); s += sizeof(size_t); n -= sizeof(size_t); } while (n--) { *d++ = *s++; } } else { d += n; s += n; while (n && ((uintptr_t)d % sizeof(size_t))) { *(--d) = *(--s); n--; } while (n >= sizeof(size_t)) { d -= sizeof(size_t); s -= sizeof(size_t); *(size_t *)d = *(const size_t *)s; n -= sizeof(size_t); } while (n--) { *(--d) = *(--s); } } return (dst); }