42Seoul/libft

libft - ft_putchar_fd, ft_putstr_fd, ft_putendl_fd, ft_putnbr_fd

재윤 2023. 3. 24. 13:48
반응형

ft_putchar_fd

우리가 write를 쓸 때 표준 출력으로

write(1, &c, 1);

이렇게 많이 사용했음 그런데

개발자들이 사람들을 write를 쓸 때

0: 표준 에러

1: 표준 출력

2: 표준 입력

이렇게 하였고 fd가 들어온다는 말은 파일이 들어오는데 순서가 3번째로 됨

fd가 순서를 정해줌

#include "libft.h"

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

 

ft_putstr_fd

write로 출력 

#include "libft.h"

void	ft_putstr_fd(char *s, int fd)
{
	int	i;

	i = 0;
	while (s[i] != '\\0')
	{
		write(fd, &s[i], 1);
		i++;
	}
}

 

ft_putendl_fd

#include "libft.h"

void	ft_putendl_fd(char *s, int fd)
{
	int	i;

	i = 0;
	while (s[i] != '\\0')
	{
		write(fd, &s[i], 1);
		i++;
	}
	write(fd, "\\n", 1);
}

마지막에 개행문자 출력

#include "libft.h"

void	ft_putendl_fd(char *s, int fd)
{
	int	i;

	i = 0;
	while (s[i] != '\\0')
	{
		write(fd, &s[i], 1);
		i++;
	}
	write(fd, "\\n", 1);
}

 

ft_putnbr_fd

int형 n을 write로 출력하기 

#include "libft.h"

void	ft_putnbr_fd(int n, int fd)
{
	char	s;

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

 

반응형

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

libft Bonus - lstnew, lstadd_front, lstsize  (0) 2023.03.24
libft Bonus - Makefile  (0) 2023.03.24
libft - strtrim, striteri, split  (0) 2023.03.24
libft - strjoin, itoa, strmapi  (0) 2023.03.24
libft - strdup, strlen, substr  (0) 2023.03.24