From e55cc7624f1417ffc6d049fa444ef471a23857f5 Mon Sep 17 00:00:00 2001 From: David GAILLETON Date: Sat, 28 Mar 2026 16:04:39 +0100 Subject: [PATCH] working check_input --- alum1 | Bin 0 -> 20856 bytes check_input.c | 90 -------------------- src/check_input.c | 96 ++++------------------ src/get_next_line.c | 194 +++++++++++++++++++++----------------------- src/main.c | 43 +++++----- 5 files changed, 128 insertions(+), 295 deletions(-) create mode 100755 alum1 delete mode 100644 check_input.c diff --git a/alum1 b/alum1 new file mode 100755 index 0000000000000000000000000000000000000000..14f3bb63c3ec6848381aaa0f7d95959cfecd047d GIT binary patch literal 20856 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 literal 0 HcmV?d00001 diff --git a/check_input.c b/check_input.c deleted file mode 100644 index f96e177..0000000 --- a/check_input.c +++ /dev/null @@ -1,90 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* parsing.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: dgaillet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2026/03/28 13:01:37 by dgaillet #+# #+# */ -/* Updated: 2026/03/28 13:01:38 by dgaillet ### ########lyon.fr */ -/* */ -/* ************************************************************************** */ - -#include -#include -#include - -#include "./libft/libft.h" - -char *str_append(char *str, char *to_append) { - char *new_str; - int i; - int j; - - if (!str) - return to_append; - new_str = malloc(sizeof(char) * (ft_strlen(str) + ft_strlen(to_append) + 1)); - if (!new_str) - return NULL; - i = -1; - while (str[++i]) - new_str[i] = str[i]; - j = -1; - while (to_append[++j]) - new_str[i + j] = to_append[j]; - new_str[i + j] = '\0'; - free(str); - return (new_str); -} - -char *read_file(int fd) { - char *buf; - int char_readed; - char *content; - - content = NULL; - buf = malloc(sizeof(char) * 2); - if (!buf) - return (NULL); - buf[1] = '\0'; - char_readed = read(fd, buf, 1); - while (char_readed > 0) { - str_append(content, buf); - char_readed = read(fd, buf, 1); - } - free(buf); - return (content); -} - -void free_split(char **tab) { - int i; - - i = 0; - while (tab[i]) { - free(tab[i]); - i++; - } - free(tab); -} - -int check_input(int fd) { - char **content; - int i; - int j; - - content = ft_split(read_file(fd), '\n'); - if (!content) - return (-2); - i = -1; - while (content[++i]) { - j = -1; - while (content[i][++j]) { - if (content[i][j] >= '0' && content[i][j] <= '9') { - free_split(content); - return (-1); - } - } - } - free_split(content); - return (i); -} diff --git a/src/check_input.c b/src/check_input.c index 639b4ff..eae2013 100644 --- a/src/check_input.c +++ b/src/check_input.c @@ -14,88 +14,26 @@ #include #include +#include "../inc/get_next_line.h" #include "../libft/libft.h" -#include "get_next_line.h" -// char *str_append(char *str, char *to_append) { -// char *new_str; -// int i; -// int j; -// -// if (!str) -// return to_append; -// new_str = malloc(sizeof(char) * (ft_strlen(str) + ft_strlen(to_append) + 1)); -// if (!new_str) -// return NULL; -// i = -1; -// while (str[++i]) -// new_str[i] = str[i]; -// j = -1; -// while (to_append[++j]) -// new_str[i + j] = to_append[j]; -// new_str[i + j] = '\0'; -// free(str); -// return (new_str); -// } -// -// char *read_file(int fd) { -// char *buf; -// int char_readed; -// char *content; -// -// content = NULL; -// buf = malloc(sizeof(char) * 2); -// if (!buf) -// return (NULL); -// buf[1] = '\0'; -// char_readed = read(fd, buf, 1); -// while (char_readed > 0) { -// str_append(content, buf); -// char_readed = read(fd, buf, 1); -// } -// free(buf); -// return (content); -// } -// - -void free_split(char **tab) { +int check_input(int fd) { int i; + int j; + char *line = NULL; - i = 0; - while (tab[i]) { - free(tab[i]); - i++; + line = get_next_line(fd); + j = 0; + while (line != NULL) { + i = -1; + while (line[++i]) + if (!(line[i] >= '0' && line[i] <= '9') && line[i] != '\n') + return (free(line), -1); + if (ft_atoi(line) < 1 || ft_atoi(line) > 10000) + return (free(line), -1); + free(line); + j++; + line = get_next_line(fd); } - free(tab); -} - -int check_input(int fd) -{ - char **content; - int i; - int j; - char * line = NULL; - line = get_next_line(fd); - while (line != NULL) - { - - } - content = ft_split(get_next_line(fd), '\n'); - if (!content) - return (-2); - i = -1; - while (content[++i]) - { - j = -1; - while (content[i][++j]) - { - if (content[i][j] <= '0' && content[i][j] >= '9') - { - free_split(content); - return (-1); - } - } - } - free_split(content); - return (i); + return (j); } diff --git a/src/get_next_line.c b/src/get_next_line.c index 0b3a76d..3da4584 100644 --- a/src/get_next_line.c +++ b/src/get_next_line.c @@ -13,125 +13,113 @@ #include "get_next_line.h" #include "../libft/libft.h" -size_t ft_strlen_with_c(char *str, char c) -{ - size_t i; +size_t ft_strlen_with_c(char *str, char c) { + size_t i; - i = 0; - if (!str) - return (0); - while (str[i] && str[i] != c) - i++; - return (i); + i = 0; + if (!str) + return (0); + while (str[i] && str[i] != c) + i++; + return (i); } -size_t detect_newline(char *str) -{ - size_t i; +size_t detect_newline(char *str) { + size_t i; - i = 0; - if (!str) - return (0); - while (str[i]) - { - if (str[i] == '\n') - return (1); - i++; - } - return (0); + i = 0; + if (!str) + return (0); + while (str[i]) { + if (str[i] == '\n') + return (1); + i++; + } + return (0); } -static void fill_line(char *line, char *c_remaining, char *src, size_t *index) -{ - size_t i; - size_t j; +static void fill_line(char *line, char *c_remaining, char *src, size_t *index) { + size_t i; + size_t j; - i = 0; - j = 0; - while (c_remaining && c_remaining[i]) - { - line[i] = c_remaining[i]; - i++; - } - while (src[j] && src[j] != '\n') - { - line[i + j] = src[j]; - src[j] = 0; - j++; - } - if (src[j] == '\n') - line[i + j] = '\n'; - *index = j; + i = 0; + j = 0; + while (c_remaining && c_remaining[i]) { + line[i] = c_remaining[i]; + i++; + } + while (src[j] && src[j] != '\n') { + line[i + j] = src[j]; + src[j] = 0; + j++; + } + if (src[j] == '\n') + line[i + j] = '\n'; + *index = j; } -char *build_line(char *src, char *c_remaining, size_t *index) -{ - char *line; - size_t size; - size_t is_jump; +char *build_line(char *src, char *c_remaining, size_t *index) { + char *line; + size_t size; + size_t is_jump; - is_jump = detect_newline(src); - size = ft_strlen_with_c(src, '\n') + ft_strlen_with_c(c_remaining, '\0') + is_jump + 1; - line = ft_calloc(size, sizeof(char)); - if (!line) - { - free(c_remaining); - return (NULL); - } - if (!src) - return (NULL); - fill_line(line, c_remaining, src, index); - if (c_remaining) - free(c_remaining); - return (line); + is_jump = detect_newline(src); + size = ft_strlen_with_c(src, '\n') + ft_strlen_with_c(c_remaining, '\0') + + is_jump + 1; + line = ft_calloc(size, sizeof(char)); + if (!line) { + free(c_remaining); + return (NULL); + } + if (!src) + return (NULL); + fill_line(line, c_remaining, src, index); + if (c_remaining) + free(c_remaining); + return (line); } -static void read_file(int fd, char *buffer, ssize_t *nb_read) -{ - *nb_read = read(fd, buffer, BUFFER_SIZE); - if (*nb_read < 0) - return ; - buffer[*nb_read] = '\0'; +static void read_file(int fd, char *buffer, ssize_t *nb_read) { + *nb_read = read(fd, buffer, BUFFER_SIZE); + if (*nb_read < 0) + return; + buffer[*nb_read] = '\0'; } -static char *get_the_line(int fd, char *buffer) -{ - char *line; - size_t i; - ssize_t nb_read; +static char *get_the_line(int fd, char *buffer) { + char *line; + size_t i; + ssize_t nb_read; - i = 0; - nb_read = 0; - line = NULL; - if (buffer[0] != '\0') - { - line = build_line(buffer, NULL, &i); - if (!line) - return (NULL); - ft_memcpy(buffer + i + 1, buffer, ft_strlen_with_c(buffer + i, '\0')); - } - while (detect_newline(line) != 0) - { - read_file(fd, buffer, &nb_read); - if (nb_read < 0) - return (free(line), NULL); - if (nb_read == 0) - break ; - line = build_line(buffer, line, &i); - ft_memcpy(buffer + i + 1, buffer, ft_strlen_with_c(buffer + i, '\0')); - } - return (line); + i = 0; + nb_read = 0; + line = NULL; + if (buffer[0] != '\0') { + line = build_line(buffer, NULL, &i); + if (!line) + return (NULL); + ft_memcpy(buffer, buffer + i + 1, ft_strlen_with_c(buffer + i, '\0')); + } + while (detect_newline(line) == 0) { + read_file(fd, buffer, &nb_read); + if (nb_read < 0) + return (free(line), NULL); + if (nb_read == 0) + break; + line = build_line(buffer, line, &i); + ft_memcpy(buffer, buffer + i + 1, ft_strlen_with_c(buffer + i, '\0')); + } + return (line); } -char *get_next_line(int fd) -{ - static char buffer[BUFFER_SIZE + 1] = ""; - char *line; +char *get_next_line(int fd) { + static char buffer[BUFFER_SIZE + 1] = ""; + char *line; - if (fd < 0 || BUFFER_SIZE <= 0) - return (NULL); - line = get_the_line(fd, buffer); - if (!line) - return (NULL); - return (line); + if (fd < 0 || BUFFER_SIZE <= 0) + return (NULL); + line = get_the_line(fd, buffer); + if (!line) + return (NULL); + return (line); } diff --git a/src/main.c b/src/main.c index d71e907..b0c7a17 100644 --- a/src/main.c +++ b/src/main.c @@ -10,35 +10,32 @@ /* */ /* ************************************************************************** */ -#include #include +#include +#include #include "../libft/libft.h" #include "alcu.h" -int main(int argc, char* argv[]) -{ - if (argc != 2) - { - ft_putstr_fd("ERROR", 2); - return (1); - } +int main(int argc, char *argv[]) { + if (argc != 2) { + ft_putstr_fd("ERROR", 2); + return (1); + } - int fd = open(argv[1], O_RDONLY); + int fd = open(argv[1], O_RDONLY); - if (fd == -1) - { - ft_putstr_fd("ERROR", 2); - return (1); - } + if (fd == -1) { + ft_putstr_fd("ERROR", 2); + return (1); + } - int size = check_input(fd); - printf("size %d\n", size); - if (size < 0) - { - ft_putstr_fd("ERROR", 2); - return (1); - } - return (0); + int size = check_input(fd); + printf("size %d\n", size); + if (size < 0) { + ft_putstr_fd("ERROR", 2); + return (1); + } + return (0); + close(fd); } -