#include #include #include "include/string.h" size_t strlen(const char* str) { size_t len = 0; while (str[len]) { len++; } return len; } int strcmp(const char *s1, const char *s2) { while (*s1 && (*s1 == *s2)) { s1++; s2++; } return (unsigned char)*s1 - (unsigned char)*s2; } int strncmp(const char *s1, const char *s2, size_t n) { while (n--) { unsigned char c1 = (unsigned char)*s1++; unsigned char c2 = (unsigned char)*s2++; if (c1 != c2) { return c1 - c2; } if (c1 == '\0') { break; } } return 0; } char* strcpy(char *dst, const char *src) { char *ret = dst; while ((*dst++ = *src++) != 0); return ret; } char* strncpy(char *dest, const char *src, uint32_t n) { uint32_t i = 0; for (; i < n && src[i]; ++i) { dest[i] = src[i]; } for (; i < n; ++i) { dest[i] = '\0'; } return dest; } char* strcat(char *dest, const char *src) { char *end = dest + strlen(dest); while (*src) { *end++ = *src++; } *end = '\0'; return dest; } /*char* strdup(const char* s) { if (!s) { return NULL; } size_t len = strlen(s); char* copy = (char*)malloc(len + 1); if (!copy) { return NULL; } memcpy(copy, s, len); copy[len] = '\0'; return copy; }*/ void* memset(void* dst, int c, size_t n) { unsigned char* temp = (unsigned char*) dst; unsigned char val = (unsigned char) c; for (size_t i = 0; i < n; i++) { temp[i] = val; } return dst; } void* memcpy(void *dst, const void *src, uint32_t n) { char *d = dst; const char *s = src; while (n--) { *d++ = *s++; } return dst; }