int형을 char형으로(int범위)-배열

쿵ㅇ양·2023년 8월 21일

알고리즘

목록 보기
8/18

10으로 나눈 나머지 : 각 자릿수

예외 : int형 최솟값

count = 총 자릿수 :
10으로 나눈 몫을 10으로 나눠가면서 0이 나올때까지 count증가시키기

10으로 나눈 몫을 10으로 나눈 나머지를 배열에 저장해서 문자열 구하기
이때 배열은 문자형이니 '0'을 더해서 정수형을 문자형으로 바꿔주기

문자열에 수를 넣을때 거꾸로 넣어주는거 잊지말기!

#include<unistd.h>

int		ft_countnbr(int n);
void	ft_print1(int nb, char *arr, int count);

**출력하는 함수**
void	ft_putnbr(int nb)
{
	int		count;
	char	arr[20];

	count = ft_countnbr(nb);
	ft_print1(nb, arr, count);
	if (nb > 0)
		write(1, arr, count);
	else if (-2147483648 < nb && nb < 0)
	{
		write(1, "-", 1);
		write(1, arr, count);
	}
	else if (nb == -2147483648)
		write(1, "-2147483648", 11);
	else if (nb == 0)
		write(1, "0", 1);
}

**총 자릿수 세는 함수**
int	ft_countnbr(int n)
{
	int	count;

	count = 0;
	while (n != 0)
	{
		n = n / 10;
		count++;
	}
	return (count);
}

**int형 char형으로 변환하는 함수**
void	ft_print1(int nb, char *arr, int count)
{
	if (-2147483648 < nb && nb < 0)
	{
		nb = nb * (-1);
	}
	while (count > 0)
	{
		arr[count -1] = (char)(nb % 10) + '0';
		count--;
		nb = nb / 10;
	}
}
profile
개발을 공부하고 있는 대학생

0개의 댓글