์ƒˆ์†Œ์‹

๐Ÿณ 42 SEOUL

[42seoul / ft_printf] ํ”„๋กœ์ ํŠธ ๋‚ด์šฉ ๋ฐ ์•Œ์•„์•ผ ํ•  ๋‚ด์šฉ

  • -

ft_printf

 

Summary && Introduction

 

  • printf ํ•จ์ˆ˜๋ฅผ ๋˜‘๊ฐ™์ด ๊ตฌํ˜„ํ•˜๋ผ.
  • ์ฐจํ›„ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉ ๋  ๊ฒƒ์ด๋‹ค.
  • ๊ฐ€๋ณ€์ธ์ž์— ๋Œ€ํ•œ ์‚ฌ์šฉ๋ฒ•์„ ๋ฐฐ์šด๋‹ค.
  • ์„ฑ๊ณต์ ์ธ ft_printf ์˜ ํ•ต์‹ฌ์€ ๊ตฌ์กฐํ™” ๋ฐ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ์ด๋‹ค.

 

 

 

Common Instructions

 

  • Norm check๋ฅผ ์ค€์ˆ˜ํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ผ. (๋ณด๋„ˆ์Šค ํŒŒํŠธ ํฌํ•จ) - ์•„๋‹์‹œ 0์ ๋ถ€์—ฌ
  • ํ•จ์ˆ˜ ์ž‘์„ฑ์‹œ segmentation fault, bus error, double free ๋“ฑ๋“ฑ์˜ ๊ฐ‘์ž‘์Šค๋Ÿฐ ์ข…๋ฃŒ์— ์ฃผ์˜ํ•ด๋ผ. - ์•„๋‹์‹œ 0์  ๋ถ€์—ฌ
  • ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋Š” ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค. ๋ชจ๋“  ํ• ๋‹น๋œ ํž™ ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•˜์—ฌ ์ ์ ˆํ•œ free๋ฅผ ํ•ด์•ผํ•œ๋‹ค. - ์•„๋‹์‹œ 0์  ๋ถ€์—ฌ
  • relink ๋˜์ง€ ์•Š์€ Makefile์„ ์ž‘์„ฑํ•˜์—ฌ ์ œ์ถœํ•˜๋ผ. ์ปดํŒŒ์ผ์€-Wall -Wextra -Werrorํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํŒŒ์ผํ•˜๊ฒŒ๋œ๋‹ค.
  • Makefile์—๋Š” $(NAME) all clean fclean re๋ฅผ ํฌํ•จํ•˜์—ฌ์•ผ ํ•œ๋‹ค.
  • ์ด ํ”„๋กœ์ ํŠธ์—์„œ libft๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, ์†Œ์ŠคํŒŒ์ผ๊ณผ ๊ด€๋ จ makefile์„ ํ•จ๊ป˜ libftํด๋”์— ๋„ฃ์–ด์•ผํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ft_printf์˜ makefile์€ libft๋ฅผ ์ปดํŒŒ์ผ ํ•œ ํ›„์— ft_printfํ”„๋กœ์ ํŠธ๋ฅผ ์ปดํŒŒ์ผํ•˜์—ฌ์•ผ ํ•œ๋‹ค.

 

 

Mandatory part

 

  • ft_printf์˜ ์›ํ˜•์€ ๋ฐ˜๋“œ์‹œ int ft_printf(const char *, ...)๋กœํ•ด๋ผ.
  • Cํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(libc)์˜ printf ํ•จ์ˆ˜๋ฅผ recodeํ•ด์•ผํ•œ๋‹ค.
  • ์›๋ณธ printf์ฒ˜๋Ÿผ buffer ๊ด€๋ฆฌ๋ฅผ ํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค.
  • ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„œ์‹๋ฌธ์ž(conversion)๋ฅผ ๋‹ค๋ค„์•ผํ•œ๋‹ค. : cspdiuxX%
  • ๋ชจ๋“  ์„œ์‹๋ฌธ์ž์—์„œ -0.*ํ”Œ๋ž˜๊ทธ์™€ ์ตœ์†Œ ํ•„๋“œ ๋„ˆ๋น„(minimum field width)์„ ๋‹ค๋ค„์•ผํ•œ๋‹ค.
  • ์›๋ž˜์˜ printf ํ•จ์ˆ˜์™€ ๋น„๊ต๋ ๊ฒƒ์ด๋‹ค.
  • ar ์ปค๋งจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด๋ผ. libtool์€ ๊ธˆ์ง€๋˜์–ด์žˆ๋‹ค.




## ํ”„๋กœ์ ํŠธ ์ „ ์•Œ์•„์•ผํ•  ๋‚ด์šฉ 

 

1. ๊ฐ€๋ณ€์ธ์ž (variable argument)

https://infinitt.tistory.com/335

 

[C / 42seoul / ft_printf] - ๊ฐ€๋ณ€์ธ์ž (variable argument)

๊ฐ€๋ณ€์ธ์ž (variable argument) ๊ฐ€๋ณ€ ์ธ์ž๋ž€? C์–ธ์–ด์—์„œ๋Š” scanf ํ˜น์€ printf ์ฒ˜๋Ÿผ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ •ํ•ด์ง€์ง€ ์•Š์€ ํ•จ์ˆ˜๋“ค์ด ์žˆ๋‹ค. ์ด๋Ÿฐ ํ•จ์ˆ˜๋“ค์€ ์‚ฌ์šฉํ• ๋•Œ๋งˆ๋‹ค ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋‹ฌ๋ผ์ง€๋ฉฐ, ์ด๋Ÿฌํ•œ ๊ฒƒ

infinitt.tistory.com

 

 

Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.