diff options
| author | Charles <sircharlesaze@gmail.com> | 2019-11-20 01:06:49 +0100 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2019-11-20 01:44:43 +0100 |
| commit | a46f13dc1fef2af96f418984af9db6acfeaeb581 (patch) | |
| tree | e8952acaba6442d3968d270c172884d0bfdcf5db | |
| parent | fbd1d450b0c2da394cbb02fd61ab75b2719bfb72 (diff) | |
| download | libft-a46f13dc1fef2af96f418984af9db6acfeaeb581.tar.gz libft-a46f13dc1fef2af96f418984af9db6acfeaeb581.tar.bz2 libft-a46f13dc1fef2af96f418984af9db6acfeaeb581.zip | |
Taking advantage of the ascii table tricks
ft_toupper, ft_tolower, ft_atoi, ft_itoa
| -rw-r--r-- | ft_atoi.c | 34 | ||||
| -rw-r--r-- | ft_itoa.c | 4 | ||||
| -rw-r--r-- | ft_tolower.c | 10 | ||||
| -rw-r--r-- | ft_toupper.c | 4 |
4 files changed, 24 insertions, 28 deletions
@@ -6,48 +6,38 @@ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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)); } @@ -6,7 +6,7 @@ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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); } |
