본문 바로가기
42Seoul/libft

ft_putnbr_fd

by 하고싶은건많은놈 2023. 2. 16.

putnbr_fd?

//원 함수 없음
    void ft_putnbr_fd(int n, int fd);

구현해야할 함수 기능

: Outputs the integer ’n’ to the given file descriptor.

해석 및 부연설명

: 주어진 file descriptor 정수 'n'을 출력한다

ex)

ft_putnbr_fd(2147483647, 1);

코드 실행 결과

2147483647

지정한 file descriptor(1)에 정상적으로 정수 2147483647이 출력되었다.

의문점 및 생각해볼점

딱히 없다.


ft_putnbr_fd 구현

void	ft_putnbr_fd(int n, int fd)
{	
	/*
	char	*temp;

	temp = ft_itoa(n);
	write(fd, temp, ft_strlen(temp));
	*/

	char	temp;

	if (n == -2147483648)
	{
		write(fd, "-2147483648", 11);
		return ;
	}
	if (n < 0)
	{
		write(fd, "-", 1);
		n *= -1;
	}
	while (n >= 10)
	{
		ft_putnbr_fd(n / 10, fd);
		n %= 10;
	}
	if (n < 10)
	{
		temp = n | '0';
		write(fd, &temp, 1);
	}
}

처음엔 아래처럼 짰다가, 생각해보니 이미 만들어둔 ft_itoa 함수가 있어 그걸 활용하는 쪽으로 방향을 틀어 주석의 코드처럼 구성해보았다.
그런데 이럴 경우 ft_putnbr_fd 함수에서는 free함수를 쓸 수 없기에 메모리 누수가 생길 가능성이 있었다. 결국 다시 원래 코드를 쓰기로 결정했다.

'42Seoul > libft' 카테고리의 다른 글

ft_lstadd_back  (0) 2023.02.16
ft_putstr_fd  (0) 2023.02.16
ft_putendl_fd  (0) 2023.02.16
ft_putchar_fd  (0) 2023.02.16
ft_lstnew  (0) 2023.02.16

댓글