[42Seoul] ft_printf(5) - flow chart

yamkim·2020년 11월 6일
0

42Cursus-ft_printf

목록 보기
5/5

ft_printf(5) flow chart

이하는, ft_printf 과제를 위해 작성한 함수들에 대해 설명하고 있습니다. 가장 상위 함수로부터
시작하여 점점 작은 단위의 함수들을 살펴보는 순서로 설명하였습니다. flow chart와 pseudo 중,
각 함수를 설명하기 수월한 방법을 택하여 설명하였습니다.

ft_printf Overview flow chart


Function Description

  • get_info: value를 출력하기 위해 필요한 flags, width, precision에 대한 정보 추출.
  • print_va: get_info에서 추출한 정보를 활용하여 각 type에 따른 출력방식 선정.

printf_d flow chart

printf_d Description

  • 출력할 숫자를 문자열로 변경 후, flag('+', ' ')가 켜져있는 경우, negative integer인 경우
    '+'혹은 ' '를 덧붙이고, '-'를 덧붙입니다.

  • print_unsigned_num에는 부호가 없는 nbr_str("4242")가 매개변수로 사용됩니다.
  • 따라서, '-' 플래그가 켜졌다면, 왼쪽 정렬이므로 pad, nbr_str, space 순서로 출력하고,
  • '0' 플래그가 켜졌다면, put_zeroflag_disp 함수에서는 space_len 만큼의 "0", nbr_str 순서로 출력합니다.
  • 그 밖의 경우면, 오른쪽 정렬이므로 space, pad, nbr_str 순서로 출력합니다.

  • print_signed_num에는 부호가 있는 nbr_str("-4242", "+4242", " 4242")가 매개변수로 사용됩니다.
  • 따라서, '-' 플래그가 켜졌다면, 왼쪽 정렬이므로 sign(str[0])을 먼저 출력 후,
    pad, nbr_str, space 순서로 출력하고,
  • '0' 플래그가 켜졌다면, put_zeroflag_disp 함수에서는 sign, space_len 만큼의 "0",
    nbr_str 순서로 출력합니다.
  • 그 밖의 경우면, 오른쪽 정렬이므로 space, sign, pad, nbr_str 순서로 출력합니다.

set_pad_space_nbr

set_pad_space_nbr Description

  • nbr type(d, i, u, x, X)의 출력을 위한 함수의 의사코드입니다.
  • pad_len은 precision과 nbr_str의 차이만큼 제로패딩 위한 길이입니다.
  • space_len은 width와 precision처리된 nbr_str의 차이만큼 공백을 두기 위한 길이입니다.
  • 따라서, width에서 제로패딩 처리를 모두 마친 문자열의 길이를 빼주며 공백의 수를 구합니다.

0개의 댓글