From 5cc9a9fdc5483a156510cc84c4afaf79baaf9009 Mon Sep 17 00:00:00 2001 From: tosu Date: Wed, 29 Mar 2023 23:10:43 +0200 Subject: [PATCH] ex05 final --- ex05/ft_atoi_base.c | 86 +++++++++++++++++++++++++-------------------- 1 file changed, 47 insertions(+), 39 deletions(-) diff --git a/ex05/ft_atoi_base.c b/ex05/ft_atoi_base.c index 0e5ddc2..fd05f3f 100644 --- a/ex05/ft_atoi_base.c +++ b/ex05/ft_atoi_base.c @@ -1,4 +1,4 @@ -#include +#include unsigned int char_count(const char *str, char c) { @@ -55,11 +55,11 @@ int ft_atoi_base(char *str, char *base) int index_in_base; unsigned int base_len; + abs = 0; + sign = 1; base_len = is_valid_base(base); if (!base_len) return (0); - abs = 0; - sign = 1; while (*str == ' ' || *str == '\t' || *str == '\n' @@ -72,9 +72,10 @@ int ft_atoi_base(char *str, char *base) if (*str++ == '-') sign *= -1; index_in_base = char_index(base, *str); - while (index_in_base) + while (index_in_base >= 0) { abs = abs * base_len + index_in_base; + ++str; index_in_base = char_index(base, *str); } return (sign * abs); @@ -83,7 +84,7 @@ int ft_atoi_base(char *str, char *base) #include #define BASE10 "0123456789" #define BASE2 "01" -#define BASE3 "013" +#define BASE3 "012" #define BASE9 "012345678" #define BASE11 "0123456789a" #define BASE16 "0123456789abcdef" @@ -161,6 +162,7 @@ int main(void) input = " +-+-13"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); input = " +-+-13"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); input = " +-+-13"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + printf("\n"); base = BASE2; printf("Base: %s\n", base); @@ -194,7 +196,7 @@ int main(void) input = "1011"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); input = "1100"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); input = "1101"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); - input = "2147483647"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + input = "1111111111111111111111111111111"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); input = " 1101"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); input = " 1101"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); input = " 1101"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); @@ -228,6 +230,7 @@ int main(void) input = " +-+-1101"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); input = " +-+-1101"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); input = " +-+-1101"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + printf("\n"); base = BASE3; printf("Base: %s\n", base); @@ -295,6 +298,7 @@ int main(void) input = " +-+-111"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); input = " +-+-111"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); input = " +-+-111"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + printf("\n"); base = BASE9; printf("Base: %s\n", base); @@ -362,6 +366,7 @@ int main(void) input = " +-+-13"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); input = " +-+-13"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); input = " +-+-13"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + printf("\n"); base = BASE11; printf("Base: %s\n", base); @@ -396,39 +401,40 @@ int main(void) input = "11"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); input = "12"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); input = "a02220281"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); - input = " a1"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); - input = " a1"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); - input = " a1"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); - input = " a1y"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); - input = " a1y"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); - input = " a1y"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); - input = " a1yc"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); - input = " a1yc"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); - input = " a1yc"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); - input = " +a1"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); - input = " +a1"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); - input = " +a1"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); - input = " -a1"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); - input = " -a1"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); - input = " -a1"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); - input = " -+a1"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); - input = " -+a1"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); - input = " -+a1"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); - input = " +-+a1"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); - input = " +-+a1"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); - input = " +-+a1"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); - input = " +-a1"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); - input = " +-a1"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); - input = " +-a1"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); - input = " -+-a1"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); - input = " -+-a1"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); - input = " -+-a1"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); - input = " -+-+a1"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); - input = " -+-+a1"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); - input = " -+-+a1"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); - input = " +-+-a1"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); - input = " +-+-a1"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); - input = " +-+-a1"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + input = " 12"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + input = " 12"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + input = " 12"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + input = " 12y"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + input = " 12y"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + input = " 12y"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + input = " 12yc"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + input = " 12yc"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + input = " 12yc"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + input = " +12"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + input = " +12"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + input = " +12"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + input = " -12"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + input = " -12"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + input = " -12"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + input = " -+12"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + input = " -+12"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + input = " -+12"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + input = " +-+12"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + input = " +-+12"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + input = " +-+12"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + input = " +-12"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + input = " +-12"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + input = " +-12"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + input = " -+-12"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + input = " -+-12"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + input = " -+-12"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + input = " -+-+12"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + input = " -+-+12"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + input = " -+-+12"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + input = " +-+-12"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + input = " +-+-12"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + input = " +-+-12"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + printf("\n"); base = BASE16; printf("Base: %s\n", base); @@ -496,6 +502,7 @@ int main(void) input = " +-+-d"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); input = " +-+-d"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); input = " +-+-d"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + printf("\n"); base = BASE90; printf("Base: %s\n", base); @@ -565,4 +572,5 @@ int main(void) input = " +-+-d"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); input = " +-+-d"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); input = " +-+-d"; printf("Input: <'%s'>, Output: <%d>\n", input, ft_atoi_base(input, base)); + printf("\n"); }