diff --git a/ex00/handle_input.c b/ex00/handle_input.c new file mode 100644 index 0000000..f098231 --- /dev/null +++ b/ex00/handle_input.c @@ -0,0 +1,71 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* handle_input.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: smatthes +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/03/25 18:58:21 by smatthes #+# #+# */ +/* Updated: 2023/03/25 19:12:23 by smatthes ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int check_inp_valid(int argc, char **argv, int n); +int str_len(char *str); +void atoi_arr(char **argv, int *borders, int n); + +int handle_input(int argc, char **argv, int *borders, int n) +{ + if (check_inp_valid(argc, argv, n) == 0) + return (0); + atoi_arr(argv, borders, n); + return (1); +} + +int check_inp_valid(int argc, char **argv, int n) +{ + int allowed_char_num; + int i; + char *inp; + + if (argc != 2) + return (0); + inp = argv[1]; + allowed_char_num = n * n * 2 - 1; + if (str_len(inp) != allowed_char_num) + return (0); + i = 0; + while (i < allowed_char_num) + { + if (i % 2 != 0 && inp[i] != ' ') + { + return (0); + } + if (i % 2 == 0 && (inp[i] < '1' || inp[i] > '4')) + return (0); + i++; + } + return (1); +} + +int str_len(char *str) +{ + int i; + + i = 0; + while (str[i]) + i++; + return (i); +} + +void atoi_arr(char **argv, int *borders, int n) +{ + int i; + + i = 0; + while (i < n * n * 2 -1) + { + borders[i / 2] = argv[1][i] - '0'; + i = i + 2; + } +}