뇌 마음 반반저장소

[42_libft] Part 2 (put 함수들과 fd) 본문

42/libft

[42_libft] Part 2 (put 함수들과 fd)

맹진저 2022. 12. 15. 20:03
728x90

2. put 함수

일단 fd가 뭔지 한번 알아보자!

컴퓨터 프로그래밍 분야에서 파일 서술자(file descriptor) 또는 파일 기술자는 특정한 파일에 접근하기 위한 추상적인 키이다. feat 위키백과

말 그대로 그냥 필요한 파일을 불러오는 것이다. 처음에는 이게 이해가 안 됐는데 계속 쓸수록 이해가 되었다. 예를 들어서 [42] argc, argv 거 어떻게 쓰는 겁니까? 에서 설명한 것 처럼 argv는 셸에서 프로그램명 뒤에 써준 것들을 받아서 적용시켜준다고 했다. 그것처럼 fd는 참조되는 파일들 혹은 들어오는 문자열을 뜻한다. 

아래처럼 작동시키면 된다.

./a.out hello
./a.out text.txt

  2-1. ft_putchar_fd

putchar란?

Parameters : 매개 변수
c: The character to output.
c: 출력할 문자입니다.
fd: The file descriptor on which to write.
fd: 출력에 사용 될 fd입니다.

Return value : 반환 값
none

External functs. : 외부 기능
write

Description : 설명
Outputs the character ’c’ to the given file descriptor.
fd에서 받은 문자 'c'를 출력합니다.

함수 선언 원형

void	ft_putchar_fd(char c, int fd);

!테스트 메인!

int main()
{
    char    word;

    word = 'c';
    ft_putchar_fd(word, 1);
    write(1, "\n", 1);
    return (0);
}

 

!테스트 결과!

$ ./main.out
c

 2-2. ft_putstr_fd

putstr란?

Parameters : 매개 변수
s: The string to output.
s: 출력할 문자열입니다.
fd: The file descriptor on which to write.
fd: 출력에 사용될 fd입니다.

Return value : 반환 값
none

External functs. : 외부 기능
write

Description : 설명
Outputs the string ’s’ to the given file descriptor.
fd에서 받은 문자열 's'를 출력합니다.

함수 선언 원형

void	ft_putstr_fd(char *s, int fd);

!테스트 메인!

int main()
{
    char    *str;

    str = "hello baby developer!";
    ft_putstr_fd(str, 1);
    write(1, "\n", 1);
    return (0);
}

!테스트 결과!

$ ./main.out
hello baby developer!

 2-3. ft_putendl_fd

putendl란?

Parameters : 매개 변수
s: The string to output.
s: 출력할 문자열입니다.
fd: The file descriptor on which to write.
fd: 출력에 사용될 fd입니다.

Return value : 반환 값
none

External functs. : 외부 기능
write

Description : 설명
Outputs the string ’s’ to the given file descriptor followed by a newline.
fd에서 받은 문자열 's'를 출력하고 줄을 바꿉니다.

함수 선언 원형

void	ft_putendl_fd(char *s, int fd);

!테스트 메인!

int main()
{
    char    *str;

    str = "hello baby developer!";
    ft_putendl_fd(str, 1);
    return (0);
}

!테스트 결과!

$ ./main.out
hello baby developer!

2-3. ft_putnbr_fd

putnbr란?

Parameters : 매개 변수
n: The integer to output.
n: 출력할 정수입니다.
fd: The file descriptor on which to write.
fd: 출력에 사용될 fd입니다.

Return value : 반환 값
none

External functs. : 외부 기능
write

Description : 설명
Outputs the integer ’n’ to the given file descriptor.
fd에서 받은 숫자를 정수 'n'을 출력합니다.

이 함수는 피신에서 했던 ft_putnbr와 유사하다 (또 나왔네.. ㅎㅎ 안녕?)  n을 write함수로 쓸 수 있게 하나씩 쪼개서 만든다. 

 

함수 선언 원형

void	ft_putnbr_fd(int n, int fd);

!테스트 메인!

int main()
{
    int num;

    num = 365;
    ft_putnbr_fd(num, 1);
    write(1, "\n", 1);
    num = -365;
    ft_putnbr_fd(num, 1);
    write(1, "\n", 1);
    return (0);
}

!테스트 결과!

$ ./main.out
365
-365

 

 

학교를 프로즌 한지 2주 하고 3일. 4일을 제외하고 눈만 뜨면 계속 libft를 쓰고 블로그를 작성했다. 12일이 걸린 걸 감안하면 나쁘지 않은 길이라고 생각한다. 그리고 처음에 마음먹었던 것처럼 스스로 코드를 작문해보고 메인 함수까지 만들면서 더욱더 구조가 익숙해졌다. (인과관계랄까 ㅎ) 이제 하루 쉬고 printf  프로젝트를 직접 만들러 가봐야겠다!

 

나 자신 파이팅!

이 글을 읽은 이웃님도 파이팅!

 

도움을 주고 싶으신 내용이나

틀린 내용이 있다면 댓글로 남겨주시고,

참고하신다면 꼭 출처를 밝혀주세요!

 

도움이 되었다면 공감 한 번씩 부탁드립니다❤️

 

728x90
Comments