diff options
Diffstat (limited to 'src/utils')
-rw-r--r-- | src/utils/string.c | 18 | ||||
-rw-r--r-- | src/utils/string.h | 7 |
2 files changed, 23 insertions, 2 deletions
diff --git a/src/utils/string.c b/src/utils/string.c index 81be415..e01d1b6 100644 --- a/src/utils/string.c +++ b/src/utils/string.c @@ -1,5 +1,6 @@ #include "string.h" +#include <stdint.h> #include <string.h> size_t searchInStringArray(const char *array[], size_t array_size, @@ -12,3 +13,20 @@ size_t searchInStringArray(const char *array[], size_t array_size, } return array_size; } + +uint64_t decimalToU64(char *str_begin, char *str_end, bool *success) { + uint64_t result = 0; + + while (str_begin < str_end) { + if (*str_begin < '0' || *str_begin > '9') { + *success = false; + return 0; + } + result *= 10; + result += *str_begin - '0'; + str_begin += 1; + } + + *success = true; + return result; +} diff --git a/src/utils/string.h b/src/utils/string.h index 79af8a9..7d0a5c8 100644 --- a/src/utils/string.h +++ b/src/utils/string.h @@ -1,6 +1,9 @@ #pragma once #include <stddef.h> +#include <stdint.h> -size_t searchInStringArray(const char *array[], size_t array_size, const char *str, - size_t str_size); +size_t searchInStringArray(const char *array[], size_t array_size, + const char *str, size_t str_size); + +uint64_t decimalToU64(char *str_begin, char *str_end, bool *success); |