[ft_printf] Final : Bonus part

Cadet_42ยท2021๋…„ 8์›” 14์ผ
0

ft_printf

๋ชฉ๋ก ๋ณด๊ธฐ
6/6
post-thumbnail

๐Ÿ”ฎ 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๋ฅผ ์‚ฌ์šฉํ•จ.

profile
์•ˆ๋…•ํ•˜์„ธ์š”! ๊ฐœ๋ฐœ๊ณต๋ถ€๋ฅผ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํžˆ ๋ฐฐ์šฐ๊ฒ ์Šต๋‹ˆ๋‹ค. ;)

0๊ฐœ์˜ ๋Œ“๊ธ€