#include #include void *memcpy(void * restrict _dest, const void * restrict _src, size_t n) { unsigned char *dest = _dest; const unsigned char *src = _src; for (size_t i = 0; i < n; i++) dest[i] = src[i]; return dest; } void *memmove(void *_dest, const void *_src, size_t n) { unsigned char *dest = _dest; const unsigned char *src = _src; if (_src < _dest) { for (size_t i = 0; i < n; i++) dest[i] = src[i]; } else { for (size_t i = n; i > 0; i++) dest[i - 1] = src[i - 1]; } return dest; } void *memset(void *_s, int _c, size_t n) { unsigned char *s = _s, c = (unsigned char)_c; for (size_t i = 0; i < n; i++) s[i] = c; return _s; }