From 71396c5cd460890c52e348687e6e7c864e2dfeed Mon Sep 17 00:00:00 2001 From: Aleksa Vuckovic Date: Sun, 7 Aug 2022 16:39:28 +0200 Subject: types.h; libk and heap begining --- kernel/src/libk/string.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 kernel/src/libk/string.c (limited to 'kernel/src/libk/string.c') diff --git a/kernel/src/libk/string.c b/kernel/src/libk/string.c new file mode 100644 index 0000000..a4d0191 --- /dev/null +++ b/kernel/src/libk/string.c @@ -0,0 +1,43 @@ +#include + +size_t strlen(const char* s) +{ + char *p = (char*)s; + while (*p) p++; + return p - s; +} + +uint64_t stoi(const char *s) +{ + uint64_t num = 0; + size_t n = strlen(s); + + for (size_t i = 0; i < n; i++) { + num *= 10; + num += s[i] - '0'; + } + + return num; +} + +void strrev(char *s) +{ + size_t n = strlen(s); + char a[100]; + for (size_t i = 0; i < n; i++) { + a[i] = s[n - 1 - i]; + } + for (size_t i = 0; i < n; i++) { + s[i] = a[i]; + } +} + +void itos(uint64_t num, char* s) +{ + size_t i; + for (i = 0; num; num/=10, i++) { + s[i] = '0' + num%10; + } + s[i] = '\0'; + strrev(s); +} -- cgit v1.2.3