Files
42_INT_12_webserv/srcs/ft_itoa.cpp
hugogogo 2a69e14db2 wip atoi
2022-07-31 12:30:35 +02:00

60 lines
801 B
C++

# include <sstream>
#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)
{
// std::stringstream strs;
// std::string s;
//
// strs << n;
// s = strs.str();
// return ((char*)(s.c_str()));
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);
}