memmove.c 277 B

123456789101112131415161718
  1. #include <string.h>
  2. void* memmove(void* dst, const void* src, unsigned long n)
  3. {
  4. if(dst < src)
  5. return memcpy(dst, src, n);
  6. else if(dst == src)
  7. return dst;
  8. void* r = dst;
  9. char* d = dst + n - 1;
  10. const char* s = src + n - 1;
  11. while(n--) *(d--) = *(s--);
  12. return r;
  13. }