ft_itoa

jen133·2022년 1월 16일
0

libft

목록 보기
28/44

💻 ft_itoa

int to ascii 즉 int형 변수를 문자열로 바꿔서 반환해주는 함수

📃 ft_itoa 원형

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);
}

profile
늅늅

0개의 댓글