aboutsummaryrefslogtreecommitdiff
path: root/utils.c
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2019-10-30 04:58:00 +0100
committerCharles <sircharlesaze@gmail.com>2019-10-30 04:58:00 +0100
commit001786c8ec464b1ae3e6321acfd984227cb1bbee (patch)
tree6c71dd227eb8a8c28cd529cb4cfc31879e845831 /utils.c
parentd963161275bcb3af4097872ba033da3ff9255606 (diff)
downloadft_printf-001786c8ec464b1ae3e6321acfd984227cb1bbee.tar.gz
ft_printf-001786c8ec464b1ae3e6321acfd984227cb1bbee.tar.bz2
ft_printf-001786c8ec464b1ae3e6321acfd984227cb1bbee.zip
Added flags for x and X
Diffstat (limited to 'utils.c')
-rw-r--r--utils.c42
1 files changed, 38 insertions, 4 deletions
diff --git a/utils.c b/utils.c
index 09b2bd5..eed55fb 100644
--- a/utils.c
+++ b/utils.c
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2019/10/29 00:12:40 by cacharle #+# #+# */
-/* Updated: 2019/10/30 03:53:16 by cacharle ### ########.fr */
+/* Updated: 2019/10/30 04:06:52 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -30,10 +30,10 @@ int strrchr_index(const char *s, char c)
return (i);
}
-static int nbrlen_radix(long int nbr, int radix)
+static int nbrlen_radix(long long int nbr, int radix)
{
- int counter;
- long unsigned int u_nbr;
+ int counter;
+ long long unsigned int u_nbr;
if (nbr == 0)
return (1);
@@ -74,3 +74,37 @@ char *ft_itoa_base(long long int n, char *base)
}
return (str);
}
+
+static int nbrlen_unsigned_radix(long long unsigned int nbr, int radix)
+{
+ int counter;
+
+ if (nbr == 0)
+ return (1);
+ counter = 0;
+ while (nbr > 0)
+ {
+ nbr /= radix;
+ counter++;
+ }
+ return (counter);
+}
+
+char *ft_itoa_unsigned_base(long long unsigned int n, char *base)
+{
+ char *str;
+ int len;
+ int radix;
+
+ radix = ft_strlen(base);
+ len = nbrlen_unsigned_radix(n, radix);
+ if ((str = (char*)malloc(sizeof(char) * (len + 1))) == NULL)
+ return (NULL);
+ str[len] = '\0';
+ while (--len >= 0)
+ {
+ str[len] = base[n % radix];
+ n /= radix;
+ }
+ return (str);
+}