void disp_int(unsigned long long int aff, long long int i, t_info *info) { if (!aff && info->prec && info->w_min && !ft_strchr(info->flag, '0')) ++info->w_min; if (!ft_strchr(info->flag, '-')) fill_w(i, nbrlen(aff, info), info); if (i < 0 || ft_strchr(info->flag, '+') || ft_strchr(info->flag, ' ')) { if (i < 0) ft_putchar('-'); else ft_putchar(ft_strchr(info->flag, '+') ? '+' : ' '); (info->nb_print)++; } if ((i < 0 || ft_strchr(info->flag, '+') || ft_strchr(info->flag, ' ')) && !(info->prec) && ft_strchr(info->flag, '0')) while (info->w_min > nbrlen(aff, info) && !ft_strchr(info->flag, '-')) { ft_putchar('0'); (info->nb_print)++; (info->w_min)--; } fill_prec(aff, info); if (!(info->prec < 0 && aff == 0)) ft_putnbr_ull(aff, info); fill_w(i, nbrlen(aff, info), info); }
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); }
int print_space_left(t_opt opt) { int size; int ret; ret = 0; size = opt.width - nbrlen(opt); if (check_signe_moins(opt) == -1 || (ft_check_charset(opt.type, "diDuU") && opt.attri.plus)) size--; size -= print_prefix(opt, 0); if ((!opt.attri.moins && opt.presi) || (!opt.attri.moins && !opt.attri.zero && !opt.presi)) deal_pres(opt, &ret, &size); else if (opt.attri.space && ft_check_charset(opt.type, "diD")) { ft_putchar(' '); ret++; } deal_opt(opt, &ret); return (ret); }
int getnbr(char *str, char *base) { int i; int acc; int pow_val; int sign; str = get_sign(str, base, &sign); if (str == 0) return (0); i = nbrlen(str) - 1; if (my_nboverflow(str, i + 1, sign)) return (0); acc = 0; pow_val = 1; while (i >= 0) { acc += pow_val * get_base_id(str[i], base); pow_val = pow_val * my_strlen(base); i -= 1; } return (acc * sign); }
void my_put_nbr(int n) { int i; int c; int l; int s; char str[12]; i = pos_or_neg(n); s = (l = nbrlen(i)); str[l] = '\0'; while (i > 0) { c = i % 10; i = i / 10; str[l - 1] = c + 48; l--; } if (n == 0) str[s - 1] = 48; if (n == -2147483648) str[s - 1] = 56; aff_nbr(str); }