Files
42_INT_12_webserv/srcs/ft_itoa.cpp
2022-07-29 15:52:43 +02:00

51 lines
664 B
C++

#include <string.h>
static int eval_is_negative(int *n)
{
if (*n < 0)
{
*n = *n * -1;
return (1);
}
return (0);
}
static int eval_digit_nbr(int n)
{
int digit_nbr;
if (n == 0)
return (1);
digit_nbr = 0;
while (n != 0)
{
digit_nbr++;
n = n / 10;
}
return (digit_nbr);
}
char *ft_itoa(int n)
{
int i;
char *str;
int is_negative;
if (n == -2147483648)
return (strdup("-2147483648"));
is_negative = eval_is_negative(&n);
i = eval_digit_nbr(n) + is_negative;
str = new char[i+1];
if (is_negative)
str[0] = '-';
str[i] = '\0';
while (i > 0 + is_negative)
{
i--;
str[i] = (n % 10) + '0';
n = n / 10;
}
return (str);
}