void				ft_printf_do_pointer(t_printf_parse_env *env,
										va_list args,
										int caps)
{
	char			*s;
	unsigned long	l;

	l = va_arg(args, unsigned long);
	env->ret += ft_putstr_fd("0x", env->fd);
	s = ft_ntoa(l >> 16, 16);
	env->ret += ft_putstr_fd(caps ? ft_strtoupper(s) : s, env->fd);
	s = ft_ntoa(l & 0xffff, 16);
	env->ret += ft_putstr_fd(caps ? ft_strtoupper(s) : s, env->fd);
}
示例#2
0
int				ft_printf_ldtoa(t_ldbl val, int prec, char *buff, char spe)
{
	t_uldbl		dbl;
	int			expn;
	int			base;
	char		*bstr;

	dbl.val = val;
	bstr = BASE_DENARY;
	if (spe == 'a' || spe == 'A')
		bstr = spe == 'A' ? BASE_HEXA_UP : BASE_HEXA;
	base = (int)ft_strlen(bstr);
	if (dbl.bits.expn == 2047)
	{
		ft_strcat(buff, dbl.bits.mant ? "nan" : "\0");
		if (!dbl.bits.mant)
			ft_strcat(buff, dbl.bits.sign ? "-inf" : "inf");
		buff = ft_isupper(spe) ? ft_strtoupper(buff) : buff;
		return (0);
	}
	buff[0] = dbl.bits.sign ? '-' : buff[0];
	dbl.bits.sign = 0;
	expn = getint(&dbl, &prec, buff + 1, spe);
	dbl.val *= base;
	dtoa_base(&dbl.val, buff + 1, prec, bstr);
	buff = !buff[0] ? ft_strcpy(buff, buff + 1) : buff;
	return (expn);
}
示例#3
0
char			*ft_con_xx(char *format, int d, va_list ap,
		char *(*f_tab[S_TAB_FLAG])(char *, int, char *))
{
	char			*str;

	str = ft_con_x(format, d, ap, f_tab);
	str = ft_strtoupper(str);
	return (str);
}
示例#4
0
static void		get_data(t_dt *data, t_av *av, size_t *len, char **ptr)
{
	av->ui = get_modifier(data, len);
	ft_itoa_base2(av->ui, 16, av->s);
	av->len = ft_strlen(av->s);
	*ptr = (av->len >= *len) ? &av->s[av->len - *len] : av->s;
	av->len = ft_strlen(*ptr);
	if (data->flag.point && av->ui == 0)
		av->len = 1;
	if (*data->tail == 'X')
		ft_strtoupper(*ptr);
}
示例#5
0
int		ft_check_setenv_ag(char **arg, char **varn, char **varvalue, int *ow)
{
	if (arg[1] && arg[2] && arg[3])
	{
		*varn = ft_strtoupper(ft_strdup(arg[1]));
		*varvalue = ft_strdup(arg[2]);
		*ow = ft_atoi(arg[3]);
	}
	else
	{
		FP("Setenv error.\n");
		FP("Usage : setenv (char*)name (char*)value (int)overwrite\n");
		return (-1);
	}
	return (0);
}
示例#6
0
static void	padded_print(t_padd *padd, size_t width, int *counter)
{
	char	*s;
	char	*ntoa;

	ntoa = ft_ntoa(padd->num, padd->base);
	ntoa = padd->caps ? ft_strtoupper(ntoa) : ntoa;
	if (!width)
		s = ft_strdup(ntoa);
	else
		s = ft_strndup(ntoa, width);
	if (ft_strlen(s) < width)
	{
		width -= ft_strlen(s);
		while (--width)
			*counter += ft_putchar_fd('0', padd->fd);
	}
	*counter += ft_putstr_fd(s, padd->fd);
	ft_strdel(&s);
}