diff options
| author | Aleksa Vuckovic <aleksav013@gmail.com> | 2022-08-07 16:39:28 +0200 |
|---|---|---|
| committer | Aleksa Vuckovic <aleksav013@gmail.com> | 2022-08-07 16:43:26 +0200 |
| commit | 71396c5cd460890c52e348687e6e7c864e2dfeed (patch) | |
| tree | 72e7dd114cea46c5209dba2e0c2ed9ffeb7f55b5 /kernel/src/libk/string.c | |
| parent | 50aaae893611af890a6855158ad0a3e32c7b2c43 (diff) | |
types.h; libk and heap begining
Diffstat (limited to 'kernel/src/libk/string.c')
| -rw-r--r-- | kernel/src/libk/string.c | 43 |
1 files changed, 43 insertions, 0 deletions
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 <types.h> + +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); +} |
