char *ft_itoa(int n);
n
: the integer to convert.ver.1
#include "libft.h"
size_t get_len(int n)
{
size_t len;
if (n == 0)
return (1);
len = 0;
if (n < 0)
len++;
while (n)
{
n /= 10;
len++;
}
return (len);
}
char* ft_itoa(int n)
{
size_t len;
size_t i;
char* result;
len = get_len(n);
if (!(result = (char*)malloc(len + 1)))
return (NULL);
result[len] = '\0';
if (n < 0)
{
result[0] = '-';
i = 1;
}
else
i = 0;
while (len-- > i)
if (n < 0)
{
result[len] = '0' + n % 10 * (-1);
n = n / 10;
}
else
{
result[len] = '0' + n % 10;
n = n / 10;
}
return (result);
}
ver.2
#include "libft.h"
size_t ft_nb_len(int nb)
{
int len;
len = 0;
if (nb <= 0)
len++;
while (nb)
{
len++;
nb = nb / 10;
}
return (len);
}
char *ft_itoa(int n)
{
int len;
char *str;
long nb;
len = ft_nb_len(n);
nb = n;
if (!(str = malloc(sizeof(char) * len + 1)))
return (NULL);
if (nb < 0)
{
str[0] = '-';
nb = -nb;
}
if (nb == 0)
str[0] = '0';
str[len--] = '\0';
while (nb)
{
str[len] = nb % 10 + '0';
len--;
nb = nb / 10;
}
return (str);
}
int main()
{
printf("%s\n", ft_itoa(0));
printf("%s\n", ft_itoa(987654321));
printf("%s\n", ft_itoa(-123456789));
}