Exemplo n.º 1
0
int			pf_until_conv(size_t *i, va_list ap, char const *str)
{
	t_struct	data;

	*i += 1;
	data = init_data();
	if (str[*i] == '%')
		return (pf_putchar(str[*i++]));
	while (str[*i] && str[*i] != '%' && pf_isconver(str[*i]) == 0)
	{
		if (pf_isflag(str[*i]) == 0 && pf_isclong(str[*i], str[*i + 1]) == 0
			&& pf_isnum(str[*i]) == 0 && str[*i] != '.')
		{
			*i -= 1;
			return (0);
		}
		pf_fill_struct((char *)str, i, &data, ap);
		*i += 1;
	}
	if (data.min < 0)
	{
		data.flag = data.flag | 4;
		data.min = -data.min;
	}
	if (str[*i] == '\0')
		return (0);
	return (pf_print_var(data, str[*i], ap));
}
Exemplo n.º 2
0
int			endofnum(char *str, int index)
{
	int		ret;

	ret = 0;
	while (pf_isnum(str[index]))
	{
		index++;
		ret++;
	}
	return (ret - 1);
}
Exemplo n.º 3
0
int			endofnum(char *str, int index)
{
	int		k;

	k = 0;
	while (pf_isnum(str[index]))
	{
		index++;
		k++;
	}
	return (k - 1);
}
Exemplo n.º 4
0
void		pf_fill_struct(char *str, size_t *i, t_struct *data, va_list a)
{
	if (pf_isflag(str[*i]))
		fill_data_flag(str[*i], data);
	else if (pf_isclong(str[*i], str[*i + 1]))
	{
		if (fill_data_clong(str[*i], str[*i + 1], data) == 2)
			*i += 1;
	}
	else if (str[*i] == '.')
		data->prec = data->prec != 0 ? data->prec : fill_data_prec(str, i, a);
	else if (pf_isnum(str[*i]))
		data->min = data->min != 0 ? data->min : fill_data_min(str, i, a);
}