mirror of
https://github.com/DavidGailleton/42-Push_Swap.git
synced 2026-01-27 00:41:57 +00:00
fixing the parsing
This commit is contained in:
@@ -11,6 +11,17 @@
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "check_error.h"
|
||||
#include "parsing.h"
|
||||
|
||||
int verif_is_number(char **tab)
|
||||
{
|
||||
int len;
|
||||
|
||||
len = len_split(tab);
|
||||
if (tab[len - 1][0] == '-')
|
||||
return (0);
|
||||
return (1);
|
||||
}
|
||||
|
||||
int check_error(char **tab, int mod)
|
||||
{
|
||||
@@ -22,5 +33,7 @@ int check_error(char **tab, int mod)
|
||||
return (0);
|
||||
if (!verif_double(tab, mod))
|
||||
return (0);
|
||||
if (!verif_is_number(tab))
|
||||
return (0);
|
||||
return (1);
|
||||
}
|
||||
|
||||
@@ -17,11 +17,11 @@ static int is_exist_flag(char **tab, int pos)
|
||||
int verif;
|
||||
|
||||
verif = 0;
|
||||
if (ft_strncmp(tab[pos], "--bench", 7)
|
||||
|| ft_strncmp(tab[pos], "--simple", 8)
|
||||
|| ft_strncmp(tab[pos], "--medium", 8)
|
||||
|| ft_strncmp(tab[pos], "--adaptive", 10)
|
||||
|| ft_strncmp(tab[pos], "--complex", 9))
|
||||
if (ft_strncmp(tab[pos], "--bench", 30)
|
||||
|| ft_strncmp(tab[pos], "--simple", 30)
|
||||
|| ft_strncmp(tab[pos], "--medium", 30)
|
||||
|| ft_strncmp(tab[pos], "--adaptive", 30)
|
||||
|| ft_strncmp(tab[pos], "--complex", 30))
|
||||
verif = 1;
|
||||
return (verif);
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
#include "parsing.h"
|
||||
|
||||
static int scan_str_is_digit(char *tab)
|
||||
int scan_str_is_digit(char *tab)
|
||||
{
|
||||
int i;
|
||||
|
||||
@@ -21,7 +21,9 @@ static int scan_str_is_digit(char *tab)
|
||||
{
|
||||
if (!ft_isdigit(tab[i]) && (tab[i] == '-' && !ft_isdigit(tab[i + 1])))
|
||||
return (0);
|
||||
if (tab[i] == '+' && !ft_isdigit(tab[i + 1]))
|
||||
else if (tab[i] == '+' && !ft_isdigit(tab[i + 1]))
|
||||
return (0);
|
||||
else if (!ft_isdigit(tab[i]))
|
||||
return (0);
|
||||
i++;
|
||||
}
|
||||
|
||||
@@ -18,5 +18,6 @@ int check_error(char **tab, int mod);
|
||||
int verif_is_digit(char **tab, int mod);
|
||||
int verif_overflow(char **tab, int mod);
|
||||
int verif_double(char **tab, int mod);
|
||||
int scan_str_is_digit(char *tab);
|
||||
|
||||
#endif
|
||||
|
||||
8
main.c
8
main.c
@@ -22,10 +22,18 @@ int main(int argc, char **argv)
|
||||
int mod;
|
||||
int len;
|
||||
|
||||
if (argc < 2)
|
||||
return (0);
|
||||
tab = split_all(join_all(argc, argv));
|
||||
if (!tab)
|
||||
return (0);
|
||||
len = len_split(tab);
|
||||
if (!scan_str_is_digit(tab[len - 1]))
|
||||
{
|
||||
free_tab(tab);
|
||||
write(2, "Error\n", 7);
|
||||
return (0);
|
||||
}
|
||||
mod = calcul_mod(len, tab);
|
||||
if (check_error(tab, mod))
|
||||
test1(tab, len, mod);
|
||||
|
||||
@@ -27,7 +27,10 @@ int test1(char **tab, int len, int mod)
|
||||
if (!stacks)
|
||||
return (0);
|
||||
if (check_order(stacks->a))
|
||||
{
|
||||
free_all(stacks);
|
||||
return (0);
|
||||
}
|
||||
flags(pos_flag(tab, mod), pos_bench(tab, mod), tab, stacks);
|
||||
if (stacks->bench == 1)
|
||||
print_bench(stacks);
|
||||
|
||||
Reference in New Issue
Block a user