1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
/* Public domain. */ #include <stddef.h> void * memmove (void *dest, const void *src, size_t len) { char *d = dest; const char *s = src; if (d < s) while (len--) *d++ = *s++; else { char *lasts = s + (len-1); char *lastd = d + (len-1); while (len--) *lastd-- = *lasts--; } return dest; }