ft_printf_bonus.cint printchar_num(const char **str, va_list ap) - ft_printfํจ์์ ๋ง์ฐฌ๊ฐ์ง๋ก, str ๋ฌธ์์ด์์ cxXdiup%์ ํด๋นํ๋ ๋ฌธ์๋ฅผ ํ๋ฆฐํธํ๋ค. ํ๋ผ๋ฏธํฐ๊ฐ **str์ธ ์ด์ ๋ ๋ฌธ์์ด*str๋ฅผ int ft_printf(const char *str, ...)๋ก ๋ถํฐ ๋ฐ๊ธฐ ์ํด ๋ฌธ์์ด์ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ๋ค.
void putchar_inside(const char *c, int *count)- ํ๊ต norm์ ๋ง์ถ๊ธฐ ์ํด์, ์๋๋ ์์ฑํ์ง ์์๋ ํจ์ ์ธ๋ฐ, norm์ ๋ง์ถ๊ธฐ ์ํด ์์ฑํ์๋ค. ํ๋ผ๋ฏธํฐ๋ก const char *c๋ฅผ ๋ฃ์ผ๋ฏ๋ก์จ, ๋ฌธ์ ํ๋ ํ๋๋ฅผ ์ฝ์๋๋ง๋ค ๊ทธ์ ํด๋นํ๋ ๋ฌธ์ ๊ธธ์ด๋ฅผ ๋ฆฌํดํ๋ค.
int ft_printf(const char *str, ...) - ์ค printfํจ์ ์ฒ๋ผ, % widthcxXdiup% ํด๋นํ๋ ๋ฌธ์์ด์ ์ฝ๊ณ , ๊ทธ ๊ธธ์ด ๊ฐ์ ๋ฆฌํดํ๋ค.
ft_printf_width_bonus.cint print_space(const char *pos_flag, va_list ap) - ๋ฌธ์์ด str์์ ํด๋นํ๋ width๋ฐ๊ฒฌ์, ์กฐ๊ฑด์ ๋ง๊ฒ ๊ณ์ฐํ์ฌ ๊ทธ ๊ฐ์ ํด๋นํ๋ space๋ฅผ ๋ฆฌํดํ๋ค. ์ด ํจ์ ์์์ ์ด๋ฏธ argument์ width์ ์กฐ๊ฑด๋ค์ ๊ณ์ฐํ์๋ค.
static int get_hexdec_len(unsigned long n) - 16 ์ง๋ฒ์ ์ฌ์ฉํ๋ x, X, p์ ๊ธธ์ด ๊ฐ์ ๋ฆฌํดํ ๋ ์ฐ์ธ๋ค.
int get_arg_len(char c, va_list ap) - cxXdiup argument์ ๊ธธ์ด๋ฅผ ํ๋ฆฐํธ ํ ๋ ์ฐ์ธ๋ค.
static int get_arg_len_di(va_list ap) -์๋ int get_arg_len(char c, va_list ap) ํจ์์์ ํฌํจ ๋์ด ์์์ผ๋, ํ๊ต norm (ํ๋์ ํจ์๊ฐ 25๋ผ์ธ์ ๋์ผ๋ฉด ์๋จ)์ ์ํด, ์๋ก์ด ํจ์๋ก ๋ง๋ค์๋ค.
static int get_arg_len_u (va_list ap)- ์๋ int get_arg_len(char c, va_list ap) ํจ์์์ ํฌํจ ๋์ด ์์์ผ๋, ํ๊ต norm (ํ๋์ ํจ์๊ฐ 25๋ผ์ธ์ ๋์ผ๋ฉด ์๋จ)์ ์ํด, ์๋ก์ด ํจ์๋ก ๋ง๋ค์๋ค.
ft_printf_num_bonus.cint print_di(const char **str, va_list ap) - ๋ฌธ์์ด str์์ d์ i๋ฅผ ๋ฐ๊ฒฌํ๋ฉด, ํด๋น ๋ฌธ์๊ฐ์ ํ๋ฆฐํธํจ. ft_itoa๋ฅผ ์ฌ์ฉํ๋ฉด์ malloc์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ free๋ฅผ ๋ฐ๋์ ํด์ฃผ์ด์ผ ํ๋ค. ๊ทธ๋ ๊ฒ ํ์ง ์์์, memory leaks๊ฐ ๋ฐ์ํ๋ค.
int print_u(const char **str, va_list ap)- ๋ฌธ์์ด str์์ u๋ฅผ ๋ฐ๊ฒฌํ๋ฉด, ํด๋น ๋ฌธ์๊ฐ์ ํ๋ฆฐํธํจ. ft_utoa ๋ฅผ ์ฌ์ฉํ๋ฉด์ malloc์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ free๋ฅผ ๋ฐ๋์ ํด์ฃผ์ด์ผ ํ๋ค. ๊ทธ๋ ๊ฒ ํ์ง ์์์, memory leaks๊ฐ ๋ฐ์ํ๋ค.
int ft_putnbr(size_t nbr, char *base) - putnbr๋ฅผ ์ฌ์ฉํ์ฌ, 16 ์ง์๋ฅผ ํํํ๋๋ก ํ์๋ค.
int printf_pointer(const char **str, va_list ap) - ๋ฌธ์์ด str์์ p๊ฐ ๋ณด์ด๋ฉด, ft_putnbr๋ด์ฅํจ์๋ฅผ ์ด์ฉํ์ฌ ํด๋น ๊ฐ์ ํ๋ฆฐํธํ๋ค.
int printf_num(const char **str, va_list ap) - ๋ฌธ์์ด str์์ x,X ๊ฐ์ด ๋ณด์ด๋ฉด, ft_putnbr๋ด์ฅํจ์๋ฅผ ์ด์ฉํ์ฌ ํด๋น ๊ฐ์ ํ๋ฆฐํธํ๋ค.
ft_printf_string_bonus.cint ft_isdigit(int c) - ๋ฌธ์์ด str์์ ์ซ์๊ฐ ์๋์ง ํ์ธํ๋ ํจ์. int ft_printfํจ์์์์ %๋ค์ ์ซ์๊ฐ ๋ณด์ด๋ฉด ๊ทธ๊ฒ์ width๋ก ๊ฐ์ฃผํด, width์ ํด๋นํ๋ ์กฐ๊ฑด๋ค์ ํ๋ฆฐํธ ํ๋๋ก ํ๋ค.
size_t ft_strlen(const char *str) - str ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ๊ตฌํ๋ ํจ์
int write_null(void) - string ํจ์์์ null์ด ๋์ฌ๊ฒฝ์ฐ, null์ ์ ๊ณ ํด๋น length๋ฅผ 6์ ๋ฆฌํดํ๋ค.
int printpercent(const char **str) - ๋ฌธ์์ด str์์ % ๊ฐ ๋ณด์ด๋ฉด,
%๋ฅผ ์ ๊ณ , ํด๋น length์ธ 1์ ๋ฆฌํดํ๋ค.
int print_s(const char **str, va_list ap) - ๋ฌธ์์ด str์์ s๊ฐ ๋ณด์ด๋ฉด, ํด๋น ๊ฐ์ ํ๋ฆฐํธํ๊ณ , s๊ธธ์ด๊ฐ์ ๋ฆฌํดํ๋ค.
ft_printf_utils_bonus.cstatic int ft_untlen(unsigned int n) - ft_utoa์ ํ์ํ ํจ์ (malloc์, ํด๋น ๊ธธ์ด์ ํด๋น ํ๋ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํด์ผ ํ๊ธฐ ๋๋ฌธ)
char *ft_utoa(unsigned int n) - ๋ฌธ์์ด str์ ๋ณด์ด๋ u๋ฅผ ํ๋ฆฐํธ ํ ๋,unsigned int๊ฐ ํ๋ผ๋ฏธํฐ๋ก ์ฌ์ฉ๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์ itoa์ ๋ณํ์ธ utoa ํจ์๋ฅผ ์์ฑํจ.
char ft_atoi(const char *str)- print_spaceํจ์์์ %์ดํ์ argument์ ๊ธธ์ด๋ฅผ ๊ตฌํ ๋ ์ฐ์.
static int ft_intlen(int n) - ft_untlen๊ณผ๋ ๋ค๋ฅด๊ฒ int n์ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์ผ๋ฉฐ, ft_itoaํจ์์์ malloc ๋์ ํ ๋น์ ์ฌ์ฉํจ
ft_itoa(int n) - ํ๋ผ๋ฏธํฐ๋ int n์ด๋ฉฐ, ๋ฌธ์์ด str์์ d๋ i๋ฅผ ์ถ๋ ฅํ๋ ํจ์๋ฅผ ์ฌ์ฉํ ๋ ft_itoa๋ฅผ ์ฌ์ฉํจ.