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
반응형
'42 SEOUL > Libft' 카테고리의 다른 글
42 서울 Libft(ft_strlen, ft_strmapi, ft_strncmp, ft_strnstr) (0) | 2021.01.25 |
---|---|
42 서울 Libft(ft_strchr, ft_strdup, ft_strjoin, ft_strlcat, ft_strlcpy) (1) | 2021.01.25 |
42 서울 Libft(ft_memcpy, ft_memccpy, ft_memchr, ft_memcmp, ft_memmove) (0) | 2021.01.24 |
42 서울 Libft(ft_split) (0) | 2020.12.19 |
42 서울 Libft(ft_atoi, ft_itoa) (0) | 2020.12.19 |