From c49d5f5421c7444e547cab03a111cc8726b2c555 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20LUDWIG?= Date: Thu, 12 Sep 2024 12:31:58 +0200 Subject: [PATCH] feat: add `string_zero_pad` --- lib/string.c | 9 +++++++++ lib/string.h | 12 ++++++++++++ test/string_test.c | 11 +++++++++++ test/string_test.h | 2 ++ 4 files changed, 34 insertions(+) diff --git a/lib/string.c b/lib/string.c index c4da49d..b52253d 100644 --- a/lib/string.c +++ b/lib/string.c @@ -431,3 +431,12 @@ string_t string_pad_start(const string_t string, const string_t pad_string, size result[target_length] = '\0'; return result; } + +string_t string_zero_pad(uint64_t number, size_t places) { + string_t number_string = convert_number_to_string((long long)number); + string_t pad_string = string_copy("0"); + string_t result = string_pad_start(number_string, pad_string, places); + free(pad_string); + free(number_string); + return result; +} diff --git a/lib/string.h b/lib/string.h index 895ad09..b6ff5a0 100644 --- a/lib/string.h +++ b/lib/string.h @@ -298,4 +298,16 @@ size_t string_last_position_of(const string_t string, const char character); */ string_t string_pad_start(const string_t string, const string_t pad_string, size_t target_length); +/** + * @brief Pad a number with zeros. + * + * @param number + * @param places + * @return string_t + * @example zero_pad(1, 2) // "01" + * @example zero_pad(10, 2) // "10" + * @since vTODO + */ +string_t string_zero_pad(uint64_t number, size_t places); + #endif diff --git a/test/string_test.c b/test/string_test.c index 0590b97..37b2b78 100644 --- a/test/string_test.c +++ b/test/string_test.c @@ -28,6 +28,7 @@ void string_test() { string_position_of_test(); string_last_position_of_test(); string_pad_start_test(); + string_zero_pad_test(); } void string_get_length_test() { @@ -322,3 +323,13 @@ void string_pad_start_test() { assert(assert_string_equal(result, "ahello")); free(result); } + +void string_zero_pad_test() { + string_t result = string_zero_pad(1, 2); + assert(assert_string_equal(result, "01")); + free(result); + + result = string_zero_pad(10, 2); + assert(assert_string_equal(result, "10")); + free(result); +} diff --git a/test/string_test.h b/test/string_test.h index f3e44b9..bcef767 100644 --- a/test/string_test.h +++ b/test/string_test.h @@ -64,4 +64,6 @@ void string_last_position_of_test(); void string_pad_start_test(); +void string_zero_pad_test(); + #endif