/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* ft_atoi.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: rbousset +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/14 17:06:22 by rbousset #+# #+# */ /* Updated: 2020/02/14 17:07:24 by rbousset ### ########lyon.fr */ /* */ /* ************************************************************************** */ #include #include static int8_t ft_setsign(const char c) { int8_t sign; sign = 1; if (c == '-') sign = -1; return (sign); } static uint8_t ft_seti(const char *str) { uint8_t i; i = 0; while (ft_isspace(str[i])) i++; return (i); } int ft_atoi(const char *str) { uint8_t i; int8_t sign; long nb; i = ft_seti(str); nb = 0; sign = 1; if (str[i] == '+' || str[i] == '-') sign = ft_setsign(str[i++]); while (ft_isdigit(str[i])) { if (nb * 10 + (str[i] - 48) < nb) { if (sign < 0) return (0); return (-1); } nb = nb * 10 + (str[i] - 48); i++; } nb *= sign; return ((int)nb); }