From 413e1490036a59d58a1072275ddaaf3421abbbe0 Mon Sep 17 00:00:00 2001 From: hugogogo Date: Thu, 7 May 2026 11:46:03 +0200 Subject: [PATCH] adding labs --- Makefile | 1 + includes/libft.h | 3 ++- srcs/ft_itoa_static.c | 14 ++++++-------- srcs/ft_labs.c | 8 ++++++++ srcs/ft_nbrlen.c | 4 +++- srcs/ft_strjoin_static.c | 11 +++++++++-- srcs/ft_strlen.c | 4 ++-- 7 files changed, 31 insertions(+), 14 deletions(-) create mode 100644 srcs/ft_labs.c diff --git a/Makefile b/Makefile index 3ec6217..f005c55 100644 --- a/Makefile +++ b/Makefile @@ -122,6 +122,7 @@ SRCS = ft_memset.c \ pf_utils.c \ \ ft_abs.c \ + ft_labs.c \ ft_fabs.c \ ft_greater.c \ ft_smaller.c \ diff --git a/includes/libft.h b/includes/libft.h index 3c34427..f80a35c 100644 --- a/includes/libft.h +++ b/includes/libft.h @@ -61,7 +61,7 @@ size_t ft_strjoin_static(char *dst, size_t dst_size, const char **srcs, size_t n char *ft_strtrim(char const *s1, char const *set); char **ft_split(char const *s, char c); char *ft_itoa(long int n); -char *ft_itoa_static(long int nbr, char *buffer, size_t nbr_len); +char *ft_itoa_static(long int nbr, char *buffer, size_t buff_len); char *ft_utoa(unsigned long int n); char *ft_strmapi(char const *s, char (*f)(unsigned int, char)); @@ -124,6 +124,7 @@ void ft_putnbrendl(int n); void ft_putnbrendl_fd(int n, int fd); char *ft_concat_free(char *str1, char *str2); int ft_abs(int n); +long int ft_labs(long int n); double ft_fabs(double n); int ft_greater(int a, int b); int ft_smaller(int a, int b); diff --git a/srcs/ft_itoa_static.c b/srcs/ft_itoa_static.c index 2f8189f..3402d3e 100644 --- a/srcs/ft_itoa_static.c +++ b/srcs/ft_itoa_static.c @@ -55,21 +55,19 @@ char *ft_itoa_static(long int nbr, char *buffer, size_t buff_len) } // Determine if the number is negative - is_negative = ft_sign_f(nbr); - if (is_negative) - { - nbr = -nbr; // Make nbr positive for processing - } + is_negative = nbr < 0; + nbr = ft_labs(nbr); // Write the null terminator at the end - buffer[buff_len] = '\0'; + buffer[buff_len - 1] = '\0'; // Write the digits in reverse order - i = buff_len - 1; + i = buff_len - 2; do { - buffer[i--] = (nbr % 10) + '0'; + buffer[i] = (nbr % 10) + '0'; nbr /= 10; + i--; } while (nbr != 0); // Add the negative sign if needed diff --git a/srcs/ft_labs.c b/srcs/ft_labs.c new file mode 100644 index 0000000..2203c33 --- /dev/null +++ b/srcs/ft_labs.c @@ -0,0 +1,8 @@ +#include "libft.h" + +long int ft_labs(long int n) +{ + if (n < 0) + n *= -1; + return (n); +} diff --git a/srcs/ft_nbrlen.c b/srcs/ft_nbrlen.c index 28ac6ff..ea6b3c0 100644 --- a/srcs/ft_nbrlen.c +++ b/srcs/ft_nbrlen.c @@ -7,10 +7,12 @@ size_t ft_nbrlen(int nbr) { int len; + int is_negative; + is_negative = nbr < 0; len = (nbr < 0) ? 2 : 1; while (nbr /= 10) len++; - return len; + return len + is_negative; } \ No newline at end of file diff --git a/srcs/ft_strjoin_static.c b/srcs/ft_strjoin_static.c index d8c71dd..0849a1a 100644 --- a/srcs/ft_strjoin_static.c +++ b/srcs/ft_strjoin_static.c @@ -15,12 +15,19 @@ size_t ft_strjoin_static(char *dst, size_t dst_size, const char **srcs, size_t n) { + size_t total_len; + size_t i; + // Calculate total length needed - size_t total_len = 0; - for (size_t i = 0; i < n; i++) + total_len = 0; + i = 0; + while (i < n) { total_len += ft_strlen(srcs[i]); + ft_printf("--ft_strlen(srcs[%i]):%i--", i, ft_strlen(srcs[i])); + i++; } + ft_printf("{dst_size:%li,srcs[0]:%s,srcs[1]:%s,total_len:%i}", dst_size, srcs[0], srcs[1], total_len); // debug // Check if buffer is large enough (include space for '\0') if (total_len + 1 > dst_size) diff --git a/srcs/ft_strlen.c b/srcs/ft_strlen.c index 8af143b..12fcf53 100644 --- a/srcs/ft_strlen.c +++ b/srcs/ft_strlen.c @@ -11,12 +11,12 @@ /* ************************************************************************** */ /* -** return length of of string +** return length of of string, excluding the terminal '\0' */ #include "libft.h" -size_t ft_strlen(const char *str) +size_t ft_strlen(const char *str) { size_t i;