void	attrib_d_char(char **str, t_var **var, int count[3])
{
    int nbr;
    int flag;
    char c;
    int k;
    int check;
    int check_double;
    int neg;

    k = 0;
    c = 't';
    neg = 0;
    nbr = ft_nbrlen(var[count[2]]->carac);
    flag = check_flag(str, count, &nbr, &c);
    check = ft_atoi_ultra(str[count[0]]);
    if (flag == 3500)
        check_double = ft_atoi_double(str[count[0]]);
    if (str[count[0]][0] == '.' && var[count[2]]->carac < 0)
        nbr--;
    str[count[0]] = ft_ntoa_base(var[count[2]]->carac, "0123456789");
    if (var[count[2]]->carac < 0 && str[count[0]][0] != '0')
        neg = 1;
    if (flag == 1000 && var[count[2]]->carac >= 0)
    {
        neg = 1;
        str[count[0]] = ft_strjoin("+", str[count[0]]);
    }
    else if (flag == 3500)
    {
        if (var[count[2]]->carac < 0)
        {
            str[count[0]] = ft_strsub(str[count[0]], 1, ft_nbrlen(var[count[2]]->carac) + 1);
            while (k < check_double - nbr - 1)
            {
                str[count[0]] = ft_strjoin("0", str[count[0]]);
                k++;
            }
            k = 0;
            str[count[0]] = ft_strjoin("-", str[count[0]]);
            while (k < check - check_double)
            {
                str[count[0]] = ft_strjoin(" ", str[count[0]]);
                k++;
            }
        }
        else
        {
            while (k < check_double - nbr)
            {
                str[count[0]] = ft_strjoin("0", str[count[0]]);
                k++;
            }
            k = 0;
            while (k < check - check_double)
            {
                str[count[0]] = ft_strjoin(" ", str[count[0]]);
                k++;
            }
        }
    }
    else if (flag == 2000 && var[count[2]]->carac >= 0)
        str[count[0]] = ft_strjoin(" ", str[count[0]]);
    else if (flag == 4000)
    {
        if (var[count[2]]->carac >= 0)
            str[count[0]] = ft_strjoin("+", str[count[0]]);
        while (k < check - nbr)
        {
            str[count[0]] = ft_strjoin(str[count[0]], " ");
            k++;
        }
    }
    else if (flag == 3000)
    {
        if (var[count[2]]->stars < 0)
        {
            while (k > var[count[2]]->stars + nbr - 1)
            {
                str[count[0]] = ft_strjoin(str[count[0]], " ");
                k--;
            }
        }
        else
        {
            while (k < var[count[2]]->stars - nbr + 1)
            {
                str[count[0]] = ft_strjoin(" ", str[count[0]]);
                k++;
            }
        }
    }
    else if (flag != 1 && flag != 1000 && flag != 2000 &&
             flag != 3000 && flag != 4000 && flag != 3500 && flag != 5000)
    {
        if (flag < -1 && c != '0')
        {
            while (k > flag + nbr + neg)
            {
                str[count[0]] = ft_strjoin(str[count[0]], " ");
                k--;
            }
        }
        else if (flag > 0 && (c == '0' || c == '.'))
        {
            if (var[count[2]]->carac < 0)
                str[count[0]] = ft_strsub(str[count[0]], 1, ft_nbrlen(var[count[2]]->entier) + 1);
            while (k < flag - nbr - neg)
            {
                str[count[0]] = ft_strjoin("0", str[count[0]]);
                k++;
            }
            if (var[count[2]]->carac < 0)
                str[count[0]] = ft_strjoin("-", str[count[0]]);
        }
        else if (flag < -1 && c == '0')
        {
            while (k > flag)
            {
                str[count[0]] = ft_strjoin("0", str[count[0]]);
                k--;
            }
        }
        else
        {
            while (k < flag - nbr - neg)
            {
                str[count[0]] = ft_strjoin(" ", str[count[0]]);
                k++;
            }
        }
    }
    count[2]++;
}
Beispiel #2
0
int		ft_putlonglong(long long value, char **str)
{
	if ((*str = ft_ntoa_base(value, "0123456789")))
		return (ft_strlen(*str));
	return (0);
}