X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/45e1f8b055043e54be35462852ab6649d634da7c..2a49908006b177c4d6354309333d06b1b96e4887:/lunaix-os/usr/libc/src/string.c diff --git a/lunaix-os/usr/libc/src/string.c b/lunaix-os/usr/libc/src/string.c new file mode 100644 index 0000000..726437c --- /dev/null +++ b/lunaix-os/usr/libc/src/string.c @@ -0,0 +1,67 @@ +#include + +size_t +strlen(const char* str) +{ + size_t len = 0; + while (str[len]) + len++; + return len; +} + +const char* +strchr(const char* str, int character) +{ + char c = (char)character; + while ((*str)) { + if (*str == c) { + return str; + } + str++; + } + return c == '\0' ? str : NULL; +} + +size_t +strnlen(const char* str, size_t max_len) +{ + size_t len = 0; + while (str[len] && len <= max_len) + len++; + return len; +} + +char* +strncpy(char* dest, const char* src, size_t n) +{ + char c; + unsigned int i = 0; + while ((c = src[i]) && i <= n) + dest[i++] = c; + while (i <= n) + dest[i++] = 0; + return dest; +} + +char* +strcpy(char* dest, const char* src) +{ + char c; + unsigned int i = 0; + while ((c = src[i])) { + dest[i] = c; + i++; + } + dest[i] = '\0'; + return dest; +} + +int +strcmp(const char* a, const char* b) +{ + while (*a && *a == *b) { + a++; + b++; + } + return *a - *b; +} \ No newline at end of file