ft_putendl_fd 구현

yeonjkim·2021년 5월 23일
0

42seoul-libft

목록 보기
20/43

1. ft_putendl_fd 용도

* 파라미터로 들어오는 fd와 char *변수 s를 이용해 s 문자열을 모두 출력하고, \n을 출력하는 함수

2. ft_putendl_fd 프로토타입

void	ft_putendl_fd(char *s, int fd)
char *s : 출력할 char 포인터 변수 s. s 문자열.
int fd : 파일 디스크립터. 정수값으로 파일 디스크립터를 받음.

3. 파일 디스크립터란?

  • 유닉스 시스템에서 프로세스가 특정 파일에 접근하기 위한 추상적인 키.

  • 모든 프로세스(프로그램이 메모리에 적재된 것. 프로그램의 인스턴스)가 갖추어야 하는 표준 POSIX 파일 서술자는 하단과 같다.

  • file descriptor의 값은 unsigned int 값이므로 음수가 될 수 없다.

  • 다만 실제 write함수에서 테스트해본 결과 파일 디스크립터의 숫자에 상관없이 모두 출력한다. 파일 디스크립터의 정수에 따라 무엇이 달라지는지는 더욱 알아봐야 할 것 같다.

4. 구현 시 유의사항

  • 이전에 구현한 ft_putchar_fd()를 이용해 구현한다. ft_putchar_fd()는 이전의 포스트를 참고하자.

  • file descriptor의 값은 내부적으로 unsigned int값을 이용하므로 음수가 되어서는 안된다. 따라서 음수일 때 return;한다.

  • ft_putstr_fd()와는 다르게 마지막에 '\n'을 출력한다는 점을 주의한다.

5. 코드 구현

#include "libft.h"

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

        index = 0;
        if (fd < 0)
                return ;
        while (s[index] != '\0')
        {
                ft_putchar_fd(s[index], fd);
                index++;
        }
        write(fd, "\n", 1);
}

6. 코드 구현 방법

(1) 파일 디스크립터가 음수인지 검사해 음수이면 return;한다.
(2) 이전에 구현한 ft_putchar_fd()를 이용해 s[index]가 0이 아닐 때까지 s[index]를 출력한다.
(3) 마지막에 '\n'을 출력한다.

0개의 댓글