printfμ putstrμΌλ‘λ λ§μ‘±ν μ μκΈ° λλ¬Έμ
μμ½ : μ΄ νλ‘μ νΈλ κ½€ λ¨μν©λλ€. μ¬λ¬λΆμ printf ν¨μλ₯Ό μ§μ ꡬννμλ©΄ λ©λλ€. ν¬λ§μ»¨λ μ¬λ¬λΆλ€μ cheaterλ‘ μ§λͺ©λ μ μλ€λ λλ €μ μμ΄ μΆν νλ‘μ νΈμμ μ΄κ²μ μ¬νμ©ν μ μμ΅λλ€.
μ¬λ¬λΆμ μ£Όλ‘ κ°λ³ μΈμ (variadic arguments) λ₯Ό μ¬μ©νλ λ°©λ²μ λν΄ λ°°μΈ κ²μ λλ€.
| Chapter | Contents | page |
|---|---|---|
| 1 | Introduction | 2 |
| 2 | Common Instructions | 3 |
| 3 | Mandatory part | 4 |
| 4 | Bonus part | 5 |
Cμμ printf ν¨μμ λ€μ¬λ€λ₯ν¨μ νλ‘κ·Έλλ°μ μμ΄ μ°λ¦¬μκ² νλ₯ν μ°μ΅μ΄ λ©λλ€. μ΄ νλ‘μ νΈλ μ€κ° μ λμ λμ΄λλ₯Ό κ°μ§λ©°, μ¬λ¬λΆλ€μ΄ Cμμ κ°λ³ ν¨μλ€μ λ°°μΈ μ μλλ‘ λμμ€λλ€.
μ±κ³΅μ μΈ ft_printfμ ν΅μ¬μ 체κ³μ μ΄κ³ νμ₯μ± μλ μ½λμ
λλ€.
-
νλ‘μ νΈλ Norm κ·μΉμ λ§μΆ° μμ±λμ΄μΌ ν©λλ€. 보λμ€ νμΌ/ν¨μκ° μ‘΄μ¬ν κ²½μ°, κ·Έ λν norm κ²μ¬μ ν¬ν¨λλ©° norm errorκ° μμ μ 0μ μ λ°κ² λ©λλ€.
-
ν¨μλ€μ μ μλμ§ μμ νλλ€κ³Ό λ³κ°λ‘ μκΈ°μΉ μκ² μ€λ¨λμ΄μλ μ λ©λλ€.(μλ₯Ό λ€μ΄, segmentation fault, bus error, double free λ±) λ§μ½ μ΄λ κ² μ€λ¨λλ©΄, λΉμ μ νλ‘μ νΈλ μλνμ§ μλ κ²μΌλ‘ μ¬κ²¨μ§κ³ νκ°μμ 0μ μ λ°μ κ²μ λλ€.
-
νμν κ²½μ° heapμ ν λΉλ λͺ¨λ λ©λͺ¨λ¦¬ 곡κ°μ μ μ νκ² ν΄μ λμ΄μΌ ν©λλ€. λ©λͺ¨λ¦¬ λμλ μ©λ©λμ§ μμ΅λλ€.
-
κ³Όμ μμ νμν κ²½μ°,
-Wall -Wextra -Werrorνλκ·Έλ₯Ό μ§μ νμ¬ μ»΄νμΌμ μννλMakefileμ μ μΆν΄μΌ ν©λλ€. Makefileμ relink λμ΄μλ μ λ©λλ€. -
Makefileμ μ΅μν$(NAME), all, clean, fclean, reκ·μΉμ ν¬ν¨ν΄μΌ ν©λλ€. -
νλ‘μ νΈμ 보λμ€λ₯Ό μ μΆνλ €λ©΄, Makefileμ
보λμ€ κ·μΉμ ν¬ν¨ν΄μΌ ν©λλ€. μ΄ λ³΄λμ€ κ·μΉμ νλ‘μ νΈμ λ©μΈ ννΈμμ κΈμ§λμλ λͺ¨λ λ€μν ν€λ, λΌμ΄λΈλ¬λ¦¬, λλ ν¨μλ€μ μΆκ°νμ¬μΌ ν©λλ€. 보λμ€ κ³Όμ λ λ°λμ _bonus.{c/h}λΌλ λ³λμ νμΌμ μμ΄μΌ ν©λλ€. λ°λμ μννμ¬μΌ νλ λ©μΈ ννΈμ νκ°μ 보λμ€ ννΈμ νκ°λ λ³λλ‘ μ΄λ€μ§λλ€. -
λ§μΌ νλ‘μ νΈμμ μ¬λ¬λΆμ
libftμ¬μ©μ νμ©νλ€λ©΄, μμ€λ€κ³Ό κ΄λ ¨Makefileμ ν¨κ» λ£¨νΈ ν΄λ μμ μλlibftν΄λμ 볡μ¬ν΄μΌ ν©λλ€. νλ‘μ νΈμMakefileμ μ°μ libftμMakefileμ μ¬μ©νμ¬ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ»΄νμΌν λ€μ, νλ‘μ νΈλ₯Ό μ»΄νμΌν΄μΌ ν©λλ€. -
μ΄ κ³Όμ λ¬Όμ μ μΆν νμκ° μκ³ , μ±μ λ°μ νμκ° μμμ§λΌλ, μ ν¬λ μ¬λ¬λΆλ€μ΄ νλ‘μ νΈλ₯Ό μν ν μ€νΈ νλ‘κ·Έλ¨μ λ§λ€ κ²μ κΆμ₯ν©λλ€. μ΄κ²μ μ¬λ¬λΆμ κ³Όμ λ¬Όκ³Ό λλ£λ€μ κ³Όμ λ¬Όμ μ½κ² ν μ€νΈν μ μκ² λμΈ κ²μ λλ€. λν, νκ°λ₯Ό μ§νν λ μ΄λ¬ν ν μ€νΈ νλ‘κ·Έλ¨λ€μ΄ νΉν μ μ©νλ€λ μ¬μ€μ μκ² λ κ²μ λλ€. νκ° μμλ μ¬λ¬λΆμ ν μ€νΈ νλ‘κ·Έλ¨κ³Ό νκ° λ°λ λλ£μ ν μ€νΈ νλ‘κ·Έλ¨λ€μ λΉμ°ν μμ λ‘κ² μ¬μ©ν μ μμ΅λλ€.
-
ν λΉλ git μ μ₯μμ κ³Όμ λ¬Όμ μ μΆνμΈμ. μ€μ§ git μ μ₯μμ μλ κ³Όμ λ¬Όλ§ λ±κΈμ΄ λ§€κ²¨μ§ κ²μ λλ€. Deepthoughtκ° νκ°νλ κ³Όμ μ κ²½μ°μ, λλ£νκ° μ΄νμ Deepthoughtκ° μνλ©λλ€. λ§μ½ Deepthought νκ° μ€μ μ€λ₯κ° λ°μνλ€λ©΄, κ·Έ μ¦μ νκ°λ μ€μ§λ κ²μ λλ€.
| νλ‘κ·Έλ¨ μ΄λ¦ | libftprintf.a |
|---|---|
| μ μΆν νμΌ | *.c, */*.c, *.h, */*.h, Makefile |
| Makefile κ·μΉ | all, clean, fclean, re, bonus |
| μ¬μ©κ°λ₯ν μΈλΆ ν¨μ |
malloc, free, write, va_start, va_arg, va_copy, va_end |
| μ§μ λ§λ libft | μ¬μ© κ°λ₯ |
| μ€λͺ | μ€μ printfμ λμμ λͺ¨λ°©ν ft_printfλ₯Ό ν¬ν¨νλ λΌμ΄λΈλ¬λ¦¬λ₯Ό μμ±νμΈμ. |
-
ft_printfμ νλ‘ν νμ μ
int ft_printf(const char *, ...);μ΄μ΄μΌ ν©λλ€. -
μ¬λ¬λΆμ
libcμprintfν¨μλ₯Ό μ¬κ΅¬νν΄μΌ ν©λλ€. -
μ€μ
printfμ²λΌ λ²νΌ κ΄λ¦¬λ₯Ό μνν΄μλ μ λ©λλ€. -
λ€μ μμ μ§μ μλ₯Ό ꡬννμΈμ :
cspdiuxX% -
λ€μ νλκ·Έλ€κ³Ό, κ° μμ μ§μ μμ μ΅μ νμ ν¬ν¨ν λͺ¨λ μ‘°ν©μ ꡬννμ¬μΌ ν©λλ€ :
-0.* -
μ€μ printfμ λΉκ΅νμ¬ μ±μ ν κ²μ λλ€.
-
arλͺ λ Ήμ΄λ₯Ό μ΄μ©νμ¬ λΌμ΄λΈλ¬λ¦¬λ₯Ό λ§λ€μ΄μΌ ν©λλ€.libtoolμ μ¬μ©νλ κ²μ κΈμ§λ©λλ€.
β
man 3 printf / man 3 stdarg
-
νμ ꡬν ννΈκ° μλ²½νμ§ μμΌλ©΄, 보λμ€λ μκ°λ νμ§ λ§μΈμ.
-
λͺ¨λ 보λμ€λ₯Ό ꡬνν νμλ μμ΅λλ€.
-
λ€μ μμ μ§μ μ μ€ ν κ° μ΄μμ ꡬννμΈμ :
nfge -
λ€μ νλκ·Έ μ€ ν κ° μ΄μμ ꡬννμΈμ :
l ll h hh -
λ€μ νλκ·Έλ₯Ό λͺ¨λ ꡬννμΈμ :
'# +'(λ§μμ, ν κ°λ 곡백μ΄μμ)