char *ft_itoa(int n)
int get_len(int n): 정수 n이 몇 자리인지 구하는 함수이다.
#include "libft.h"
static int get_len(int n)
{
int len;
len = 1;
if (n == 0)
return (1);
while (n >= 10)
{
n = n / 10;
len++;
}
return (len);
}
char *ft_itoa(int n)
{
int sign;
int len;
char *result;
sign = 0;
if (n == -2147483648)
return (ft_strdup("-2147483648"));
if (n < 0)
{
sign = 1;
n = -n;
}
len = get_len(n);
result = (char *)malloc(sizeof(char) * (len + sign + 1));
if (!result)
return (0);
result[len + sign] = '\0';
while (len--)
{
result[len + sign] = (n % 10) + '0';
n /= 10;
}
if (sign)
result[0] = '-';
return (result);
}
itoa는 atoi와 달리 배열의 뒷 부분부터 채워야 정상적인 문자열 순서가 만들어진다.
%10연산을 하면 가장 작은수부터 계산하기 때문이다.