aboutsummaryrefslogtreecommitdiff
path: root/c04
diff options
context:
space:
mode:
Diffstat (limited to 'c04')
-rw-r--r--c04/ex00/ft_strlen.c4
-rw-r--r--c04/ex01/ft_putstr.c4
-rw-r--r--c04/ex02/ft_putnbr.c15
-rw-r--r--c04/ex03/ft_atoi.c13
-rw-r--r--c04/ex04/ft_putnbr_base.c30
-rw-r--r--c04/ex05/ft_atoi_base.c40
-rw-r--r--c04/ft_atoi.obin0 -> 1300 bytes
-rw-r--r--c04/ft_putnbr.obin0 -> 1212 bytes
-rw-r--r--c04/ft_putnbr_base.obin0 -> 1756 bytes
-rw-r--r--c04/ft_putstr.obin0 -> 708 bytes
-rw-r--r--c04/ft_strlen.obin0 -> 652 bytes
-rw-r--r--c04/main.c20
12 files changed, 81 insertions, 45 deletions
diff --git a/c04/ex00/ft_strlen.c b/c04/ex00/ft_strlen.c
index 271088d..4355784 100644
--- a/c04/ex00/ft_strlen.c
+++ b/c04/ex00/ft_strlen.c
@@ -6,11 +6,11 @@
/* By: cacharle <charles.cabergs@gmail.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2019/07/06 08:31:20 by cacharle #+# #+# */
-/* Updated: 2019/07/06 08:32:00 by cacharle ### ########.fr */
+/* Updated: 2019/07/06 13:14:51 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
-int ft_strlen(char *str)
+int ft_strlen(char *str)
{
int counter;
diff --git a/c04/ex01/ft_putstr.c b/c04/ex01/ft_putstr.c
index e98b5a0..92b855d 100644
--- a/c04/ex01/ft_putstr.c
+++ b/c04/ex01/ft_putstr.c
@@ -6,13 +6,13 @@
/* By: cacharle <charles.cabergs@gmail.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2019/07/06 07:22:38 by cacharle #+# #+# */
-/* Updated: 2019/07/06 08:34:03 by cacharle ### ########.fr */
+/* Updated: 2019/07/06 13:15:17 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
#include <unistd.h>
-void ft_putstr(char *str)
+void ft_putstr(char *str)
{
while (*str)
{
diff --git a/c04/ex02/ft_putnbr.c b/c04/ex02/ft_putnbr.c
index 4ba6a0e..020dfa6 100644
--- a/c04/ex02/ft_putnbr.c
+++ b/c04/ex02/ft_putnbr.c
@@ -6,7 +6,7 @@
/* By: cacharle <charles.cabergs@gmail.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2019/07/06 07:24:04 by cacharle #+# #+# */
-/* Updated: 2019/07/06 08:47:01 by cacharle ### ########.fr */
+/* Updated: 2019/07/06 15:09:46 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -19,21 +19,21 @@ void ft_putchar(char c)
void ft_putnbr(int nb)
{
- int i;
+ int i;
int rev_digits[100];
unsigned int nbu;
if (nb == 0)
{
ft_putchar('0');
- return;
+ return ;
}
+ nbu = nb;
if (nb < 0)
{
ft_putchar('-');
nbu = -nb;
- } else
- nbu = nb;
+ }
i = 0;
while (nbu > 0)
{
@@ -42,8 +42,5 @@ void ft_putnbr(int nb)
i++;
}
while (i > 0)
- {
- i--;
- ft_putchar(rev_digits[i] + '0');
- }
+ ft_putchar(rev_digits[--i] + '0');
}
diff --git a/c04/ex03/ft_atoi.c b/c04/ex03/ft_atoi.c
index 10f6b07..a26308e 100644
--- a/c04/ex03/ft_atoi.c
+++ b/c04/ex03/ft_atoi.c
@@ -6,7 +6,7 @@
/* By: cacharle <charles.cabergs@gmail.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2019/07/06 07:31:38 by cacharle #+# #+# */
-/* Updated: 2019/07/06 10:23:20 by cacharle ### ########.fr */
+/* Updated: 2019/07/06 15:48:43 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -31,29 +31,22 @@ int ft_atoi(char *str)
int j;
while (*str == ' ' || *str == '\t' || *str == '\n'
- || *str == '\v' || *str == '\f' || *str == '\r')
+ || *str == '\v' || *str == '\f' || *str == '\r')
str++;
is_negative = 0;
- /*printf("> %s\n", str);*/
while (*str == '-' || *str == '+')
{
if (*str == '-')
is_negative = !is_negative;
str++;
}
- /*printf("> %s\n", str);*/
nb = 0;
i = 0;
while (str[i] >= '0' && str[i] <= '9')
i++;
j = 0;
while (str[j] >= '0' && str[j] <= '9')
- {
- /*printf("%d i, %d nb\n", i, nb);*/
- i--;
- nb += pow10(i) * (str[j] - '0');
- j++;
- }
+ nb += pow10(--i) * (str[j++] - '0');
if (is_negative)
nb = -nb;
return (nb);
diff --git a/c04/ex04/ft_putnbr_base.c b/c04/ex04/ft_putnbr_base.c
index 764c42b..da6fb22 100644
--- a/c04/ex04/ft_putnbr_base.c
+++ b/c04/ex04/ft_putnbr_base.c
@@ -6,7 +6,7 @@
/* By: cacharle <charles.cabergs@gmail.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2019/07/06 07:47:44 by cacharle #+# #+# */
-/* Updated: 2019/07/06 11:12:25 by cacharle ### ########.fr */
+/* Updated: 2019/07/07 12:30:16 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -48,28 +48,30 @@ int my_strlen(char *str)
void ft_putnbr_base(int nbr, char *base)
{
- int radix;
- int i;
- int nb;
- char rev_digits[1024];
+ int radix;
+ int i;
+ unsigned int nbu;
+ char rev_digits[1024];
if (!check_base(base))
- return;
+ return ;
radix = my_strlen(base);
+ nbu = nbr;
+ if (nbr < 0)
+ {
+ write(1, "-", 1);
+ nbu = -nbr;
+ }
i = 0;
- /*printf("\n%d base %d (%s)\n", nbr, radix, base);*/
- while (nbr > 0)
+ while (nbu > 0)
{
- /*printf("%d %d %c\n", nbr, nbr % radix, base[nbr % radix]);*/
- rev_digits[i] = base[nbr % radix];
- nbr /= radix;
+ rev_digits[i] = base[nbu % radix];
+ nbu /= radix;
i++;
}
- /*for (int k = 0; k < 10; k++)*/
- /*printf("%d ", rev_digits[k]);*/
while (i > 0)
{
i--;
- write(1, rev_digits + i, 1);
+ write(1, rev_digits + i, 1);
}
}
diff --git a/c04/ex05/ft_atoi_base.c b/c04/ex05/ft_atoi_base.c
index 5de5f81..9a89fc1 100644
--- a/c04/ex05/ft_atoi_base.c
+++ b/c04/ex05/ft_atoi_base.c
@@ -6,10 +6,36 @@
/* By: cacharle <charles.cabergs@gmail.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2019/07/06 08:07:17 by cacharle #+# #+# */
-/* Updated: 2019/07/06 12:47:25 by cacharle ### ########.fr */
+/* Updated: 2019/07/07 13:26:28 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
+int check_the_base(char *base)
+{
+ int i;
+ int j;
+
+ i = 0;
+ while (base[i])
+ {
+ if (base[i] == '-' || base[i] == '+' || base[i] == ' '
+ || base[i] == '\t' || base[i] == '\n' || base[i] == '\v'
+ || base[i] == '\f' || base[i] == '\r')
+ return (0);
+ j = 0;
+ while (base[j])
+ {
+ if (j != i && base[j] == base[i])
+ return (0);
+ j++;
+ }
+ i++;
+ }
+ if (i < 2)
+ return (0);
+ return (1);
+}
+
int my_pow(int base, int exponent)
{
int accumulator;
@@ -33,23 +59,25 @@ int position_in_base(char digit, char *base)
return (i);
}
-int ft_atoi_base(char *str, char *base)
+int ft_atoi_base(char *str, char *base)
{
int radix;
int i;
int j;
int nb;
+ if (!check_the_base(base))
+ return (0);
nb = 0;
radix = 0;
- while (base[++radix]);
+ while (base[radix])
+ radix++;
i = 0;
- while (str[++i]);
- printf("%s base %d (%s)\n", str, radix, base);
+ while (str[i])
+ i++;
j = 0;
while (--i >= 0)
{
- printf("%c: %d * (%d^%d) = %d\n", str[i], position_in_base(str[i], base), radix, i, my_pow(radix, i) * position_in_base(str[j], base));
nb += my_pow(radix, i) * position_in_base(str[j], base);
j++;
}
diff --git a/c04/ft_atoi.o b/c04/ft_atoi.o
new file mode 100644
index 0000000..8c7622b
--- /dev/null
+++ b/c04/ft_atoi.o
Binary files differ
diff --git a/c04/ft_putnbr.o b/c04/ft_putnbr.o
new file mode 100644
index 0000000..4d8c488
--- /dev/null
+++ b/c04/ft_putnbr.o
Binary files differ
diff --git a/c04/ft_putnbr_base.o b/c04/ft_putnbr_base.o
new file mode 100644
index 0000000..db3788f
--- /dev/null
+++ b/c04/ft_putnbr_base.o
Binary files differ
diff --git a/c04/ft_putstr.o b/c04/ft_putstr.o
new file mode 100644
index 0000000..099c1e4
--- /dev/null
+++ b/c04/ft_putstr.o
Binary files differ
diff --git a/c04/ft_strlen.o b/c04/ft_strlen.o
new file mode 100644
index 0000000..33f0ca0
--- /dev/null
+++ b/c04/ft_strlen.o
Binary files differ
diff --git a/c04/main.c b/c04/main.c
index 0e035a9..d4324a8 100644
--- a/c04/main.c
+++ b/c04/main.c
@@ -17,12 +17,14 @@ int main()
ft_putstr(s);
printf("\n");
+ printf("----------------------\n");
ft_putnbr(0); printf("\n");
ft_putnbr(42); printf("\n");
ft_putnbr(-42); printf("\n");
ft_putnbr(INT_MAX); printf("\n");
ft_putnbr(INT_MIN); printf("\n");
+ printf("----------------------\n");
char *s_happypath = "42";
char *s_happypathn = "-42";
char *s_int0 = "0";
@@ -33,6 +35,7 @@ int main()
char *pos = "++--+++--4";
char *garbage_tail = "76iqu21#!@";
char *all = "\n\t \v++++---12341234#3%^@";
+ char *subject_test = " ---+--+1234ab567";
printf("%d\n", ft_atoi(s_happypath));
printf("%d\n", ft_atoi(s_happypathn));
printf("%d\n", ft_atoi(s_int0));
@@ -43,18 +46,31 @@ int main()
printf("%d\n", ft_atoi(pos));
printf("%d\n", ft_atoi(garbage_tail));
printf("%d\n", ft_atoi(all));
+ printf("%d\n", ft_atoi(subject_test));
printf("----------------------\n");
- // doit gerer les nombres negatifs ??
ft_putnbr_base(42, "0123456789"); printf("\n");
+ ft_putnbr_base(-42, "0123456789"); printf("\n");
ft_putnbr_base(42, "01"); printf("\n");
+ ft_putnbr_base(-42, "01"); printf("\n");
ft_putnbr_base(42, "0123456789abcdef"); printf("\n");
ft_putnbr_base(42, "01234567"); printf("\n");
- ft_putnbr_base(INT_MAX - 5, "01"); printf("\n");
+ ft_putnbr_base(INT_MAX, "0123456789abcdef"); printf("\n");
+ ft_putnbr_base(INT_MIN, "0123456789abcdef"); printf("\n");
ft_putnbr_base(INT_MAX, "");
ft_putnbr_base(INT_MAX, "a");
+ ft_putnbr_base(INT_MAX, "abb");
+ ft_putnbr_base(INT_MAX, "-0123456789");
printf("----------------------\n");
printf("%d\n", ft_atoi_base("111000", "01"));
printf("%d\n", ft_atoi_base("ff", "0123456789abcdef"));
+ printf("%d\n", ft_atoi_base("52", "01234567"));
+ printf("%d\n", ft_atoi_base("2a", "0123456789abcdef"));
+ printf("%d\n", ft_atoi_base("7fffffff", "0123456789abcdef"));
+ printf("%d\n", ft_atoi_base("ff", "0123-456789abcdef"));
+ printf("%d\n", ft_atoi_base("ff", "01\r23456789abcdef"));
+ printf("%d\n", ft_atoi_base("ff", "abcc"));
+ printf("%d\n", ft_atoi_base("ff", ""));
+ printf("%d\n", ft_atoi_base("ff", "a"));
}