void ft_catnbr(char **s, int n, t_print *print) { char *tmp; int i; char *nbr; if (print->precision == -1 && !n) { nbr = ft_strneww(0); if (print->sign) ft_strjoinn(&nbr, '+'); ft_strjoinnstringlen(s, nbr, print); free(nbr); return ; } tmp = ft_strneww(0); ft_catnb(&tmp, n, print); i = ft_strlenn(tmp); if (i <= print->precision) ft_func1(&tmp, 0, print, i); else print->precision = 0; i = ft_strlenn(tmp); ft_func2(&tmp, 0, print, i); ft_strjoinnstringlen(s, tmp, print); free(tmp); }
void ft_put_base(unsigned int n, char *base) { if (n < ft_strlenn(base)) ft_putchar(base[n]); else { ft_put_base(n / ft_strlenn(base), base); ft_putchar(base[n % ft_strlenn(base)]); } }
static char *ft_toa_next(unsigned int n, char *s, int i, char *base) { int j; i++; j = i; while (i > 0) { *(s + i - 1) = base[n % ft_strlenn(base)]; n = n / ft_strlenn(base); i--; } *(s + j) = '\0'; return (s); }
void ft_catunbr(char **s, unsigned int n, t_print *print) { char *tmp; int i; if (print->precision == -1 && !n) { if (print->width) ft_strjoinnstringlen(s, "", print); return ; } tmp = ft_strneww(0); ft_catunb(&tmp, n, print); i = ft_strlenn(tmp); if (i <= print->precision) ft_func1(&tmp, 0, print, i); else print->precision = 0; i = ft_strlenn(tmp); ft_func2(&tmp, 0, print, i); ft_strjoinnstringlen(s, tmp, print); free(tmp); }
char *ft_toa(unsigned int n, char *base) { char *s; int i; unsigned int k; i = 0; k = n; s = (char *)malloc(sizeof(*s) * 120); if (s == NULL) return (NULL); if (n == 0) { *s = '0'; *(s + 1) = '\0'; return (s); } while (k > ft_strlenn(base)) { i++; k = k / ft_strlenn(base); } return (ft_toa_next(n, s, i++, base)); }
void ft_strjoinnstringlen(char **s1, char *s2, t_print *print) { register int i; i = ft_strlenn(s2); if (i == -1) { ft_strjoinnstringlen(s1, "(null)", print); return ; } if (i < print->width && !(print->leftalign)) { ft_func1(s1, s2, print, i); } else if (i < print->width) { ft_func2(s1, s2, print, i); } else { ft_func3(s1, s2, print, i); } }