/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* ft_ltoa_base.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: gbaconni +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2021/08/16 13:51:16 by gbaconni #+# #+# */ /* Updated: 2022/04/16 00:46:32 by gbaconni ### lausanne.ch */ /* */ /* ************************************************************************** */ #include "libftprintf.h" static long ft_longlen_base(long n, long nbase); char *ft_ltoa_base(long n, char *base) { char *s; int i; long nbr; long nbase; nbase = ft_strlen(base); s = (char *) ft_calloc((ft_longlen_base(n, nbase) + 1), sizeof(char)); if (s == NULL) return (NULL); i = 0; nbr = n; if (nbr == 0) s[i++] = '0'; if (nbr < 0) nbr = -nbr; while (nbr > 0) { s[i++] = base[nbr % nbase]; nbr /= nbase; } if (n < 0) s[i++] = '-'; s[i] = '\0'; return (ft_strrev(s)); } static long ft_longlen_base(long n, long nbase) { size_t len; len = 0; if (n < 0 || n == 0) len++; while (!(n < 1 && n > -1)) { n /= nbase; len++; } return (len); }