개요
- 숫자 → 문자열
주의할 점 & 구현
- 0과 int 최솟값을 조심할 필요가 있음.
- 기존에 사용했던 함수; ft_strdup을 응용
구조는 다음과 같다.
- 0 →
ft_strdup()으로 0 나오게 도출 - int 최솟값 →
ft_strdup()으로 나오게 도출 - 숫자의 크기를 반환하는 함수
find_size()도출 → 음수 / 양수 케이스 분리 - (음수인 경우) 미리 - 채우기
- 숫자 대입 →
put()함수 사용
코드
c
#include "libft.h"
char *ft_strdup(char *src);
static int find_size(long long n)
{
int size;
size = 0;
if (n <= 0)
{
size++;
n = -n;
}
while (n > 0)
{
size++;
n /= 10;
}
return (size);
}
static char *put(char *newarr, int n, int size)
{
newarr[size--] = '\0';
while (n > 0)
{
newarr[size--] = (n % 10) + '0';
n /= 10;
}
return (newarr);
}
char *ft_itoa(int n)
{
int size;
char *newarr;
if (n == 0)
return (ft_strdup("0"));
else if (n == -2147483648)
return (ft_strdup("-2147483648"));
size = find_size((long long) n);
newarr = (char *)malloc((size + 1) * sizeof(char));
if (!newarr)
return (0);
if (n < 0)
{
newarr[0] = '-';
n *= -1;
}
return (put(newarr, n, size));
}