From a46f13dc1fef2af96f418984af9db6acfeaeb581 Mon Sep 17 00:00:00 2001 From: Charles Date: Wed, 20 Nov 2019 01:06:49 +0100 Subject: Taking advantage of the ascii table tricks ft_toupper, ft_tolower, ft_atoi, ft_itoa --- ft_atoi.c | 34 ++++++++++++---------------------- ft_itoa.c | 4 ++-- ft_tolower.c | 10 ++++++++-- ft_toupper.c | 4 ++-- 4 files changed, 24 insertions(+), 28 deletions(-) diff --git a/ft_atoi.c b/ft_atoi.c index 17488fa..bfba860 100644 --- a/ft_atoi.c +++ b/ft_atoi.c @@ -6,48 +6,38 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/10/07 09:46:16 by cacharle #+# #+# */ -/* Updated: 2019/10/19 10:50:39 by cacharle ### ########.fr */ +/* Updated: 2019/11/20 01:43:18 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ +#include "libft.h" + #define MIN_INT -2147483648 #define MAX_INT 2147483647 -static int precheck(const char **str) -{ - 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; - (*str)++; - } - return (is_negative); -} - int ft_atoi(const char *str) { unsigned int nb; int i; int is_negative; - is_negative = precheck(&str); + 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 (str[i] >= '0' && str[i] <= '9') + 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] - '0'; - i++; + nb += str[i++] & 0x0F; } return ((int)(is_negative ? -nb : nb)); } diff --git a/ft_itoa.c b/ft_itoa.c index 426937e..03d794b 100644 --- a/ft_itoa.c +++ b/ft_itoa.c @@ -6,7 +6,7 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/10/07 10:19:56 by cacharle #+# #+# */ -/* Updated: 2019/10/07 10:21:23 by cacharle ### ########.fr */ +/* Updated: 2019/11/20 01:15:40 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -56,7 +56,7 @@ char *ft_itoa(int n) len--; while (len >= (is_negative ? 1 : 0)) { - str[len] = u_nbr % 10 + '0'; + str[len] = (u_nbr % 10) | 0x30; u_nbr /= 10; len--; } diff --git a/ft_tolower.c b/ft_tolower.c index 6a252aa..919469f 100644 --- a/ft_tolower.c +++ b/ft_tolower.c @@ -6,13 +6,19 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/10/07 10:14:26 by cacharle #+# #+# */ -/* Updated: 2019/10/20 13:04:16 by cacharle ### ########.fr */ +/* Updated: 2019/11/20 01:04:02 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ +/* +** E: 0100 0101 +** e: 0110 0101 +** ^ +*/ + int ft_tolower(int c) { if (c >= 'A' && c <= 'Z') - return (c + 'a' - 'A'); + return (c | 0b00100000); return (c); } diff --git a/ft_toupper.c b/ft_toupper.c index 0257786..8579b91 100644 --- a/ft_toupper.c +++ b/ft_toupper.c @@ -6,7 +6,7 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/10/07 10:14:10 by cacharle #+# #+# */ -/* Updated: 2019/10/07 10:14:20 by cacharle ### ########.fr */ +/* Updated: 2019/11/20 01:04:51 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,6 +15,6 @@ int ft_toupper(int c) { if (c >= 'a' && c <= 'z') - return (c - 'a' + 'A'); + return (c ^ 0b00100000); return (c); } -- cgit