all flags setup, some fixes is needed

This commit is contained in:
David Gailleton
2025-11-20 16:54:00 +01:00
parent bd1c66d86f
commit 24887c810c
12 changed files with 181 additions and 63 deletions

View File

@@ -6,7 +6,7 @@
/* By: dgaillet <dgaillet@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/11/19 15:35:15 by dgaillet #+# #+# */
/* Updated: 2025/11/19 19:09:25 by dgaillet ### ########lyon.fr */
/* Updated: 2025/11/20 14:36:01 by dgaillet ### ########lyon.fr */
/* */
/* ************************************************************************** */
@@ -31,9 +31,36 @@ static int nb_to_skip(char *str)
return (1 + next_not_digit(&str[1]));
else if (*str == '.')
return (1 + next_not_digit(&str[1]));
else if (*str == ' ')
return (1 + next_not_digit(&str[1]));
return (1);
}
static void ft_parse_str(t_arg *arg, char *str, char main_arg)
{
if (*str != '0' && ft_isdigit(*str))
{
arg->padding = ft_atoi(str);
str += nb_to_skip(str);
}
while (*str != main_arg)
{
if (*str == '-')
arg->minus = ft_atoi(&str[1]);
else if (*str == '0')
arg->zero = ft_atoi(&str[1]);
else if (*str == '.')
arg->dot = ft_atoi(&str[1]);
else if (*str == '#')
arg->hash = 1;
else if (*str == ' ')
arg->space = ft_atoi(&str[1]);
else if (*str == '+')
arg->plus = 1;
str += nb_to_skip(str);
}
}
t_arg *ft_parsing(char *str)
{
t_arg *arg;
@@ -44,21 +71,6 @@ t_arg *ft_parsing(char *str)
if (!arg)
return (0);
arg->arg = main_arg;
while (*str != main_arg)
{
if (*str == '-')
arg->minus = ft_atoi(&str[1]);
else if (*str == '0')
arg->zero = ft_atoi(&str[1]);
else if (*str == '.')
arg->dot = ft_atoi(&str[1]);
else if (*str == '#')
arg->hash = 1;
else if (*str == ' ')
arg->space = 1;
else if (*str == '+')
arg->zero = 1;
str += nb_to_skip(str);
}
ft_parse_str(arg, str, main_arg);
return (arg);
}