aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2019-11-20 01:06:49 +0100
committerCharles <sircharlesaze@gmail.com>2019-11-20 01:44:43 +0100
commita46f13dc1fef2af96f418984af9db6acfeaeb581 (patch)
treee8952acaba6442d3968d270c172884d0bfdcf5db
parentfbd1d450b0c2da394cbb02fd61ab75b2719bfb72 (diff)
downloadlibft-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.c34
-rw-r--r--ft_itoa.c4
-rw-r--r--ft_tolower.c10
-rw-r--r--ft_toupper.c4
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 <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));
}
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 <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);
}