ft_printf_bonus.c
int 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.c
int 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.c
int 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.c
int 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.c
static 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
๋ฅผ ์ฌ์ฉํจ.