adding labs

This commit is contained in:
hugogogo
2026-05-07 11:46:03 +02:00
parent 36379f56b0
commit 413e149003
7 changed files with 31 additions and 14 deletions

View File

@@ -122,6 +122,7 @@ SRCS = ft_memset.c \
pf_utils.c \ pf_utils.c \
\ \
ft_abs.c \ ft_abs.c \
ft_labs.c \
ft_fabs.c \ ft_fabs.c \
ft_greater.c \ ft_greater.c \
ft_smaller.c \ ft_smaller.c \

View File

@@ -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_strtrim(char const *s1, char const *set);
char **ft_split(char const *s, char c); char **ft_split(char const *s, char c);
char *ft_itoa(long int n); 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_utoa(unsigned long int n);
char *ft_strmapi(char const *s, char (*f)(unsigned int, char)); 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); void ft_putnbrendl_fd(int n, int fd);
char *ft_concat_free(char *str1, char *str2); char *ft_concat_free(char *str1, char *str2);
int ft_abs(int n); int ft_abs(int n);
long int ft_labs(long int n);
double ft_fabs(double n); double ft_fabs(double n);
int ft_greater(int a, int b); int ft_greater(int a, int b);
int ft_smaller(int a, int b); int ft_smaller(int a, int b);

View File

@@ -55,21 +55,19 @@ char *ft_itoa_static(long int nbr, char *buffer, size_t buff_len)
} }
// Determine if the number is negative // Determine if the number is negative
is_negative = ft_sign_f(nbr); is_negative = nbr < 0;
if (is_negative) nbr = ft_labs(nbr);
{
nbr = -nbr; // Make nbr positive for processing
}
// Write the null terminator at the end // Write the null terminator at the end
buffer[buff_len] = '\0'; buffer[buff_len - 1] = '\0';
// Write the digits in reverse order // Write the digits in reverse order
i = buff_len - 1; i = buff_len - 2;
do do
{ {
buffer[i--] = (nbr % 10) + '0'; buffer[i] = (nbr % 10) + '0';
nbr /= 10; nbr /= 10;
i--;
} while (nbr != 0); } while (nbr != 0);
// Add the negative sign if needed // Add the negative sign if needed

8
srcs/ft_labs.c Normal file
View File

@@ -0,0 +1,8 @@
#include "libft.h"
long int ft_labs(long int n)
{
if (n < 0)
n *= -1;
return (n);
}

View File

@@ -7,10 +7,12 @@
size_t ft_nbrlen(int nbr) size_t ft_nbrlen(int nbr)
{ {
int len; int len;
int is_negative;
is_negative = nbr < 0;
len = (nbr < 0) ? 2 : 1; len = (nbr < 0) ? 2 : 1;
while (nbr /= 10) while (nbr /= 10)
len++; len++;
return len; return len + is_negative;
} }

View File

@@ -15,12 +15,19 @@
size_t ft_strjoin_static(char *dst, size_t dst_size, const char **srcs, size_t n) 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 // Calculate total length needed
size_t total_len = 0; total_len = 0;
for (size_t i = 0; i < n; i++) i = 0;
while (i < n)
{ {
total_len += ft_strlen(srcs[i]); 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') // Check if buffer is large enough (include space for '\0')
if (total_len + 1 > dst_size) if (total_len + 1 > dst_size)

View File

@@ -11,7 +11,7 @@
/* ************************************************************************** */ /* ************************************************************************** */
/* /*
** return length of of string ** return length of of string, excluding the terminal '\0'
*/ */
#include "libft.h" #include "libft.h"