728x90
반응형

이번 함수들은 다 출력과 관련된 함수들이다. write 함수를 잘 사용해주면 된다.

ft_putchar_fd: c문자를 fd파일 디스크립터 형식으로 출력해주는 함수

write 함수의 파라미터는 순서대로 디스크립터, 문자, 크기이므로 그냥 아래와 같이 짜주면 된다.

 

void	ft_putchar_fd(char c, int fd)
{
	write(fd, &c, 1);
}

 

ft_putstr_fd: 문자열을 fd파일 디스크립터 형식으로 출력해주는 함수

write 함수로 문자열을 모두 출력하려면 그 길이를 알 필요가 있기에 문자열의 길이를 반환해주는 ft_strlen 함수를 사용했다. 

void	ft_putstr_fd(char *s, int fd)
{
	if (s == 0)
		return ;
	write(fd, s, ft_strlen(s));
}

 

ft_putendl_fd: 끝에 '\n'이 추가된 문자열을 fd파일 디스크립터 형식으로 출력해주는 함수

ft_putstr_fd 함수에서 마지막에 '\n'을 출력하는 부분만 추가해주면 된다.

void	ft_putendl_fd(char *s, int fd)
{
	if (s == 0)
		return ;
	write(fd, s, ft_strlen(s));
	write(fd, "\n", 1);
}

 

ft_putnbr_fd: 숫자 n을 fd파일 디스크립터 형식으로 출력해주는 함수

재귀적으로 앞에 숫자부터 하나씩 출력하는 방식이다.

음수일 때는 '-'를 먼저 출력하고 양수로 바꿔서 똑같이 출력해주면 된다.

단 -2147483648의 경우 양수로 바꿨을 때 오버플로가 발생하게 되므로 따로 처리를 해줘야 한다.

'-'와 '2'를 먼저 출력한 후에 147483648을 출력하는 방식으로 처리했다. 

void	ft_putnbr_fd(int n, int fd)
{
	if (n < 0)
	{
		ft_putchar_fd('-', fd);
		n *= -1;
	}
	if (n == -2147483648)
	{
		ft_putchar_fd('2', fd);
		n = -(n % 1000000000);
	}
	if (n >= 10)
	{
		ft_putnbr_fd(n / 10, fd);
		ft_putnbr_fd(n % 10, fd);
	}
	else
		ft_putchar_fd(n + '0', fd);
}
728x90
반응형

+ Recent posts