/* ************************************************************************** */
/*                                                                            */
/*                                                        :::      ::::::::   */
/*   ft_itoa.c                                          :+:      :+:    :+:   */
/*                                                    +:+ +:+         +:+     */
/*   By: cchauvet <cchauvet@student.42angoulem      +#+  +:+       +#+        */
/*                                                +#+#+#+#+#+   +#+           */
/*   Created: 2022/09/29 13:49:45 by cchauvet          #+#    #+#             */
/*   Updated: 2023/01/09 13:51:09 by cchauvet         ###   ########.fr       */
/*                                                                            */
/* ************************************************************************** */

#include "libft.h"

static int	ft_nb_digit(int n)
{
	int	out;

	out = 0;
	while (n)
	{
		n /= 10;
		out++;
	}
	return (out);
}

char	*ft_itoa(int n)
{
	char			*out;
	unsigned int	nb[2];

	if (!n)
		return (ft_strdup("0"));
	nb[0] = ft_nb_digit(n);
	if (n < 0)
	{
		nb[1] = -n;
		nb[0]++;
	}
	else
		nb[1] = n;
	out = malloc(sizeof(char) * (nb[0] + 1));
	if (out == NULL)
		return (NULL);
	out[nb[0]--] = 0;
	if (n < 0)
		out[0] = '-';
	while (nb[1])
	{
		out[nb[0]--] = nb[1] % 10 + 48;
		nb[1] /= 10;
	}
	return (out);
}