Exemple #1
0
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);
}
Exemple #2
0
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);
}
Exemple #5
0
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);
}