diff --git a/convert/ft_atou.c b/convert/ft_atou.c new file mode 100644 index 0000000..5385e94 --- /dev/null +++ b/convert/ft_atou.c @@ -0,0 +1,40 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_atou.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: rparodi +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/11/08 17:22:41 by rparodi #+# #+# */ +/* Updated: 2025/09/08 10:16:01 by rparodi ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include + +static int ft_check_space(int c) +{ + if (c == 32 || (c >= 9 && c <= 13)) + return (1); + return (0); +} + +size_t ft_atou(const char *nptr) +{ + size_t i; + size_t number; + + if (!nptr) + return (0); + i = 0; + number = 0; + while (nptr[i]) + { + if (nptr[i] >= '0' && nptr[i] <= '9') + number = (number * 10) + nptr[i] - '0'; + else + break ; + i++; + } + return (number); +} diff --git a/includes/convert.h b/includes/convert.h index f3dcd96..d7867c3 100644 --- a/includes/convert.h +++ b/includes/convert.h @@ -6,13 +6,15 @@ /* By: rparodi +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/10/31 14:57:24 by rparodi #+# #+# */ -/* Updated: 2025/09/05 16:07:54 by rparodi ### ########.fr */ +/* Updated: 2025/09/08 10:17:01 by rparodi ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef CONVERT_H # define CONVERT_H +# include + /** * @brief Converts integer to string * @@ -29,6 +31,14 @@ char *ft_itoa(int n); */ int ft_atoi(const char *nptr); +/** + * @brief Converts string to size_t + * + * @param nptr the string that will be converted + * @return The unsigned long long on the string + */ +size_t ft_atou(const char *nptr); + /** * @brief Converts string to long long integer * diff --git a/test/convert/test_atoi.c b/test/convert/test_atoi.c index d065a80..681f7df 100644 --- a/test/convert/test_atoi.c +++ b/test/convert/test_atoi.c @@ -6,7 +6,7 @@ /* By: rparodi +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/09/04 16:54:42 by rparodi #+# #+# */ -/* Updated: 2025/09/05 15:05:21 by rparodi ### ########.fr */ +/* Updated: 2025/09/08 10:07:43 by rparodi ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,11 +19,11 @@ int main(void) { const char *str[] = {"", "0", "42", "-42", "+-42", "-2147483648", - "2147483647"}; + "2147483647", "\v\t13", "\r\n7"}; size_t i; i = 0; - while (i < 7) + while (i < 9) { if (ft_atoi(str[i]) != atoi(str[i])) { diff --git a/test/convert/test_atoll.c b/test/convert/test_atoll.c index 323e6a5..a2e3764 100644 --- a/test/convert/test_atoll.c +++ b/test/convert/test_atoll.c @@ -6,7 +6,7 @@ /* By: rparodi +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/09/04 16:54:42 by rparodi #+# #+# */ -/* Updated: 2025/09/05 15:05:31 by rparodi ### ########.fr */ +/* Updated: 2025/09/08 10:08:15 by rparodi ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,7 +19,7 @@ int main(void) { const char *str[] = {"", "0", "42", "-42", "+-42", "-2147483648", - "2147483647", "9223372036854775807", "-9223372036854775808"}; + "2147483647", "\v\t13", "\r\n7"}; size_t i; i = 0; diff --git a/test/convert/test_atou.c b/test/convert/test_atou.c new file mode 100644 index 0000000..6f8e669 --- /dev/null +++ b/test/convert/test_atou.c @@ -0,0 +1,41 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* test_atou.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: rparodi +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/09/04 16:54:42 by rparodi #+# #+# */ +/* Updated: 2025/09/08 10:20:37 by rparodi ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "color.h" +#include "convert.h" +#include +#include + +int main(void) +{ + const char *str[] = {"", "0", "42", "-42", "+-42", + "2147483647", "\v\t13", "\r\n7"}; + size_t i; + char *end; + + i = 0; + while (i < 9) + { + if (ft_atou(str[i]) != strtoull(str[i], &end, 10)) + { + dprintf(2, "%s✘ Found %zu, expected %llu%s\n", CLR_RED, + ft_atou(str[i]), strtoull(str[i], &end, 10), RESET); + exit(1); + } + else + printf("%s✔%s ", CLR_GREEN, RESET); + i++; + } + ft_atou(NULL); + printf("%s✔%s", CLR_GREEN, RESET); + puts("\n"); +} diff --git a/test/convert/test_itoa.c b/test/convert/test_itoa.c index fb273fe..b84d08b 100644 --- a/test/convert/test_itoa.c +++ b/test/convert/test_itoa.c @@ -6,7 +6,7 @@ /* By: rparodi +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/09/04 16:54:42 by rparodi #+# #+# */ -/* Updated: 2025/09/05 16:10:48 by rparodi ### ########.fr */ +/* Updated: 2025/09/08 10:09:06 by rparodi ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,7 +19,7 @@ int main(void) { - const int integer[] = {0, 42, -42, + -42, -2147483648, 2147483647}; + const int integer[] = {0, 42, -42, +-42, -2147483648, 2147483647, 13, 7}; char result[1024]; size_t i;