[C] itoa / itoa.c / itoa in c

2022. 7. 25. 16:57🧑🏻‍💻/C & C++

itoa.c apple

 

static int	num_len(long long n)
{
	int	len;

	len = 0;
	if (n < 0)
	{
		++len;
		n *= -1;
	}
	else if (n == 0)
		return (1);
	while (n != 0)
	{
		++len;
		n /= 10;
	}
	return (len);
}

static char	*storage_num(long long n, char *result)
{
	if (n / 10 != 0)
		result = storage_num(n / 10, result);
	*result++ = n % 10 + '0';
	*result = '\0';
	return (result);
}

char	*itoa(int n)
{
	char		*result;
	long long	nb;
	size_t		size_nb;

	nb = (long long)n;
	size_nb = num_len(nb);
	result = (char *)malloc((sizeof(char) * size_nb) + 1);
	if (!result)
		return (0);
	if (nb < 0)
	{
		*result++ = '-';
		nb *= -1;
	}
	result = storage_num(nb, result);
	result -= size_nb;
	return (result);
}

 

DESCRIPTION 입력으로 들어오는 정수형을 문자열로 바꾸어 반환합니다.

 

변수명 설명
n Int n

 

return   
성공 해당 정수형의 문자열
실패 NULL