diff options
Diffstat (limited to 'src/utils')
-rw-r--r-- | src/utils/string.c | 21 | ||||
-rw-r--r-- | src/utils/string.h | 1 |
2 files changed, 22 insertions, 0 deletions
diff --git a/src/utils/string.c b/src/utils/string.c index e01d1b6..5f9b7de 100644 --- a/src/utils/string.c +++ b/src/utils/string.c @@ -1,4 +1,5 @@ #include "string.h" +#include "memory.h" #include <stdint.h> #include <string.h> @@ -30,3 +31,23 @@ uint64_t decimalToU64(char *str_begin, char *str_end, bool *success) { *success = true; return result; } + +char *u64ToString(uint64_t value) { + char *str = a404m_malloc(21 * sizeof(*str)); + size_t i = 0; + + do { + str[i] = (value % 10) + '0'; + value /= 10; + ++i; + } while (value != 0); + + for (size_t j = 0; j < i / 2; ++j) { + char tmp = str[j]; + str[j] = str[i - j - 1]; + str[i - j - 1] = tmp; + } + str[i] = '\0'; + + return a404m_realloc(str, (i + 1) * sizeof(*str)); +} diff --git a/src/utils/string.h b/src/utils/string.h index 7d0a5c8..8f92bc4 100644 --- a/src/utils/string.h +++ b/src/utils/string.h @@ -7,3 +7,4 @@ 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); +char* u64ToString(uint64_t value); |