/* ************************************************************************** */ /* LE - / */ /* / */ /* ft_atoi.c .:: .:/ . .:: */ /* +:+:+ +: +: +:+:+ */ /* By: rbousset +:+ +: +: +:+ */ /* #+# #+ #+ #+# */ /* Created: 2019/10/10 05:32:13 by rbousset #+# ## ## #+# */ /* Updated: 2019/10/15 02:16:20 by rbousset ### #+. /#+ ###.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); }