From 1e9b077e0d9f3c50d7d518bf6ea7f08e7f5ec590 Mon Sep 17 00:00:00 2001 From: Charles Date: Wed, 15 Jan 2020 10:04:09 +0100 Subject: splited src in category, more generic makefile --- src/str/ft_atoi.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/str/ft_atoi.c (limited to 'src/str/ft_atoi.c') diff --git a/src/str/ft_atoi.c b/src/str/ft_atoi.c new file mode 100644 index 0000000..0ad6022 --- /dev/null +++ b/src/str/ft_atoi.c @@ -0,0 +1,43 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_atoi.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: cacharle +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2019/10/07 09:46:16 by cacharle #+# #+# */ +/* Updated: 2020/01/15 09:26:14 by cacharle ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +#define MIN_INT -2147483648 +#define MAX_INT 2147483647 + +int ft_atoi(const char *str) +{ + unsigned int nb; + int i; + int is_negative; + + while (*str == ' ' || *str == '\t' || *str == '\n' + || *str == '\v' || *str == '\f' || *str == '\r') + str++; + is_negative = 0; + if (*str == '-' || *str == '+') + if (*str++ == '-') + is_negative = 1; + i = 0; + nb = 0; + while (ft_isdigit(str[i])) + { + if (!is_negative && nb > (unsigned int)MAX_INT) + return (-1); + else if (nb > (unsigned int)MIN_INT) + return (0); + nb *= 10; + nb += str[i++] & 0x0F; + } + return ((int)(is_negative ? -nb : nb)); +} -- cgit