int print_xp(char c, int len, unsigned long long arg, t_flags *fl) { int nb; nb = 0; if (fl->prec < len && (fl->minus || arg != 0)) fl->prec = len; if (c == 'p' && fl->larg && arg == 0) fl->prec = len; if (fl->prec == -1) nb += print_char(fl->larg + fl->prec, ' '); else if (fl->larg > fl->prec && !fl->minus && !fl->zero) nb += print_char(fl->larg - fl->prec, ' '); if (fl->dieze && c == 'X' && arg != 0) nb += write(1, "0X", 2); else if ((arg != 0 && fl->dieze && c == 'x') || c == 'p') nb += write(1, "0x", 2); if (fl->zero) nb += print_char(fl->larg - fl->prec, '0'); nb += print_char(fl->prec - len, '0'); if ((c == 'x' || c == 'p') && (arg != 0 || fl->prec)) nb += ft_putstri(ft_itoa_base(arg, "0123456789abcdef")); else if (c == 'X' && (arg != 0 || fl->dieze || fl->prec)) nb += ft_putstri(ft_itoa_base(arg, "0123456789ABCDEF")); if (fl->minus) nb += print_char(fl->larg - fl->prec, ' '); return (nb); }
int ft_putnbri(int i) { int nb; long m; nb = 0; m = 1; if (i == 0) return (ft_putchari('0')); if (i == -2147483648) return (ft_putstri("-2147483648")); if (i < 0) { nb += ft_putchari('-'); i = -i; } while (i != 0) { m = (m * 10) + (i % 10); i /= 10; } while (m != 1) { nb += ft_putchari((m % 10) + 48); m /= 10; } return (nb); }
static int ft_putpti(long unsigned int i) { int nb; unsigned long m; nb = 0; m = 1; nb += ft_putstri("0x"); if (i == 0) return (nb + ft_putchari('0')); while (i != 0) { m *= 16; m += i % 16; i /= 16; } while (m > 1) { if (m % 16 >= 10) nb += ft_putchari((m % 16) + 87); else nb += ft_putchari((m % 16) + 48); m /= 16; } return (nb); }
int print_di(long long int arg, t_flags *fl) { int nb; nb = 0; if (fl->prec == 0 && arg == 0) return (nb); if (fl->larg > fl->prec && (arg < 0 || fl->space || fl->plus)) fl->larg--; if (fl->prec < nbrlen(arg) && ((arg != 0 || fl->minus) || arg == 0)) fl->prec = nbrlen(arg); if (fl->larg > fl->prec && !fl->minus && !fl->zero && fl->prec != -1) nb += print_char(fl->larg - fl->prec, ' '); if (arg < 0) nb += print_char(1, '-'); else if (fl->plus) nb += print_char(1, '+'); else if (fl->space) nb += print_char(1, ' '); if (fl->zero) nb += print_char(fl->larg - nbrlen(arg), '0'); nb += print_char(fl->prec - nbrlen(arg), '0'); if (arg != 0 || fl->prec || fl->minus) nb += ft_putstri(ft_itoa(arg)); if (fl->minus) nb += print_char(fl->larg - fl->prec, ' '); return (nb); }
static void get_result(t_ullong arg, t_format *f) { if (f->precision < (int)ft_strlen(f->buf)) f->precision = ft_strlen(f->buf); if (f->width > f->precision && !f->flag_minus && !f->flag_zero && f->precision != -1) f->res += print_char(f->width - f->precision, ' '); if (f->flag_zero) f->res += print_char(f->width - ft_strlen(f->buf), '0'); f->res += print_char(f->precision - ft_strlen(f->buf), '0'); if (arg != 0 || f->precision || f->flag_minus) f->res += ft_putstri(f->buf); if (f->flag_minus) f->res += print_char(f->width - f->precision, ' '); }
int print_u(int len, unsigned long long arg, t_flags *fl) { int nb; nb = 0; if (fl->prec < len && (arg != 0 || fl->minus)) fl->prec = len; if (fl->prec == -1) nb += print_char(fl->larg + fl->prec, ' '); else if (fl->larg > fl->prec && !fl->minus && !fl->zero) nb += print_char(fl->larg - fl->prec, ' '); if (fl->zero) nb += print_char(fl->larg - len, '0'); nb += print_char(fl->prec - len, '0'); if (arg != 0 || fl->prec || fl->minus) nb += ft_putstri(ft_itoa_base(arg, "0123456789")); if (fl->minus) nb += print_char(fl->larg - fl->prec, ' '); return (nb); }