int to ascii 즉 int형 변수를 문자열로 바꿔서 반환해주는 함수
char *ft_itoa(int n)
🔩 parameters
n : 문자열로 변환해줄 int형 변수
📬 return
char *형 반환
- int형변수를 받아 문자열로 변환한 뒤 저장공간을 할당하고 저장하여 반환
- 문자열에서 숫자는 왼쪽부터 읽지만 int형에서 정보를 불러올때는 뒷자리부터 불러왔기때문에 문자열의 뒤에서부터 앞으로 데이터를 저장했음
- 부호도 중요하기때문에 -나 +처리를 해주어야 함
- int형의 범위는 -2147483648 ~ 2147483647 인데 2147483648은 int범위를 초과하므로 long자료형을 사용해줌
- n이 0일때에도 잘 생각해주어야 함
#include "libft.h"
//N의 자릿수를 반환하는 함수
int ft_countnum(int n)
{
long num;
int i;
num = n;
i = 0;
if (n == 0)
return (1);
if (n < 0)
{
i++;
num *= -1;
}
while (num != 0)
{
num /= 10;
i++;
}
return (i);
}
char *ft_itoa(int n)
{
char *str;
long num;
int i;
num = (long)n;
i = ft_countnum(n) - 1;
str = (char *)malloc(sizeof(char) * (ft_countnum(n) + 1));
if (str == 0)
return (NULL);
if (n == -2147483648)
num = 2147483648;
else if (num < 0)
num *= -1;
str[ft_countnum(n)] = '\0';
while (i >= 0)
{
str[i] = (num % 10) + 48;
num = num / 10;
i--;
}
if (n < 0)
str[0] = '-';
return (str);
}