#include #include "include/string.h" int memcmp(const void *lhs, const void *rhs, size_t n) { const unsigned char *l = lhs; const unsigned char *r = rhs; while(n != 0 && *l == *r) { n--; l++; r++; } return (n == 0) ? 0 : *l - *r; } void *memcpy(void *restrict dst, const void *restrict src, size_t n) { char *d = dst; const char *s = src; while(n--) { *d++ = *s++; } return dst; } void *memmove(void *dst, const void *src, size_t n) { char *d = dst; const char *s = src; if(s < d) { d += n; s += n; while(n--) { *--d = *--s; } } else { while(n--) { *d++ = *s++; } } return dst; } void *memset(void *dest, int c, size_t n) { unsigned char *d = dest; while(n--) { *d++ = c; } return dest; } char *strcpy(char *restrict dst, const char *restrict src) { while((*dst = *src) != '\0') { dst++; src++; } return dst; } char *strncpy(char *restrict dst, const char *restrict src, size_t n) { while((*dst = *src) != '\0' && n != 0) { dst++; src++; n--; } memset(dst, 0, n); return dst; }