๐Ÿ–จ๏ธ ft_printf : ๋ฐ์ดํ„ฐ์˜ โ€˜ํ‘œํ˜„โ€™์„ ์ฑ…์ž„์ง„๋‹ค๋Š” ๊ฒƒ์˜ ์˜๋ฏธ

์šฐ๋ฆฌ๊ฐ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์„ธ๊ณ„์— ์ž…๋ฌธํ•˜๋ฉฐ ๊ฐ€์žฅ ๋จผ์ € ๋ฐฐ์šฐ๋Š” ์ฃผ๋ฌธ์€ ์•„๋งˆ printf("Hello, World!");์ผ ๊ฒƒ์ด๋‹ค.

๋„ˆ๋ฌด๋‚˜ ๋‹น์—ฐํ•˜๊ฒŒ, ๋งˆ์น˜ ๊ณต๊ธฐ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•ด์™”๋˜ ์ด ํ•จ์ˆ˜๋Š” ์ปดํ“จํ„ฐ ๋‚ด๋ถ€์˜ ์ถ”์ƒ์ ์ธ ๋ฐ์ดํ„ฐ(์ˆซ์ž, ์ฃผ์†Œ)๋ฅผ ์ธ๊ฐ„์ด ์ธ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” โ€˜๋ฌธ์žโ€™์˜ ํ˜•ํƒœ๋กœ ๋ฒˆ์—ญํ•ด์ฃผ๋Š” ๋งˆ๋ฒ•๊ณผ๋„ ๊ฐ™๋‹ค.

์ฒ˜์Œ, ๋””๋ฒ„๊ทธ ํˆด์„ ๋ฐฐ์šฐ๊ธฐ ์ „์— ๊ฐ€์žฅ ์‰ฝ๊ฒŒ, ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ๋Š” ๋””๋ฒ„๊น… ํˆด๋„ ๋ณดํ†ต print ๊ณ„์—ด์ด๋ฆฌ๋ผ.

born2beroot๊ฐ€ ์‹œ์Šคํ…œ์ด๋ผ๋Š” ๋•…์„ ์ดํ•ดํ•˜๋Š” ๊ณผ์ •์ด์—ˆ๋‹ค๋ฉด, ft_printf๋Š” ๊ทธ ๋•… ์œ„์—์„œ ์˜ค๊ฐ€๋Š” ๋ฐ์ดํ„ฐ์˜ โ€˜ํ‘œํ˜„โ€™์„ ์ง์ ‘ ์„ค๊ณ„ํ•˜๊ณ  ์ฑ…์ž„์ง€๋Š”, ์–ธ์–ด์˜ ๋ฒˆ์—ญ๊ฐ€๊ฐ€ ๋˜์–ด๋ณด๋Š” ๊ณผ์ œ์˜€๋‹ค.

์ด ๊ณผ์ œ์˜ ํ•ต์‹ฌ์€ โ€˜์ •ํ•ด์ง€์ง€ ์•Š์Œโ€™์„ ๋‹ค๋ฃจ๋Š” ๋ฐ ์žˆ๋‹ค. ์ปดํŒŒ์ผ ์‹œ์ ์—๋Š” ๋ช‡ ๊ฐœ์˜ ์ธ์ž๊ฐ€, ์–ด๋–ค ํƒ€์ž…์œผ๋กœ ๋“ค์–ด์˜ฌ์ง€ ์ „ํ˜€ ์•Œ ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ.

C์–ธ์–ด์˜ ์—„๊ฒฉํ•œ ํƒ€์ž… ์‹œ์Šคํ…œ์— ์‚ด์ง ์—ด๋ฆฐ ๋’ท๋ฌธ์„ ํ†ตํ•ด, ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ ๊ทœ์•ฝ(Calling Convention)๊ณผ ์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ž‘๋™ ๋ฐฉ์‹์„ ์–ด๋ ดํ’‹์ด๋‚˜๋งˆ ์—ฟ๋ณด๋ฉฐ, ์œ ์—ฐํ•จ์˜ ๋Œ€๊ฐ€๊ฐ€ ์–ผ๋งˆ๋‚˜ ํฐ ์ฑ…์ž„๊ฐ์„ ์š”๊ตฌํ•˜๋Š”์ง€(โ€ฆ) ์•Œ๊ฒŒ ๋˜๋Š” ๊ณผ์ •์ด์˜€๋‹ค.

์‚ฌ์‹ค ์ด ๊ณผ์ œ๋ฅผ ๋จผ์ € ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Œ์—๋„, born2beroot ๋ฅผ ๋จผ์ € ํ•˜๊ฒŒ ๋œ ์ด์œ ๋„, ์‹ค์งˆ, ์ด ํ”„๋กœ์ ํŠธ๊ฐ€ ๊ฐ€์ง€๋Š” ๋ฐฉ๋Œ€ํ•จ, ๊ณ ๋ คํ•ด์•ผํ•˜๋Š” ์šฐ์„ ์ˆœ์œ„ ๋“ฑ ๊ธฐ์กด์˜ ๊ณผ์ œ๋“ค๊ณผ ๊ฒฉ์ด ๋‹ค๋ฅธ ์ˆ˜์ค€์˜ ๊ฒƒ์ด์—ˆ์Œ์ด ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ์˜€๋‹ค.

๐ŸŽฉ ๊ฐ€๋ณ€ ์ธ์ž์˜ ์ดํ•ด: ์•ฝ์†๊ณผ ์‹ ๋ขฐ์˜ ๋ฉ”์ปค๋‹ˆ์ฆ˜

ft_printf์˜ ๊ตฌํ˜„์€ <stdarg.h> ํ—ค๋”์— ์ •์˜๋œ ๋งคํฌ๋กœ๋“ค์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์—์„œ ์‹œ์ž‘๋œ๋‹ค. ์ด๋Š” ๋‹จ์ˆœํ•œ ๊ธฐ๋Šฅ ์Šต๋“์ด ์•„๋‹ˆ๋ผ, ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์ชฝ๊ณผ ํ˜ธ์ถœ๋˜๋Š” ์ชฝ ์‚ฌ์ด์˜ ๋ณด์ด์ง€ ์•Š๋Š” โ€˜์•ฝ์†โ€™์„ ์ดํ•ดํ•˜๋Š” ๊ณผ์ •์ด์—ˆ๋‹ค.

  • va_list, va_start, va_arg, va_end: ์ด ๋„ค ๊ฐ€์ง€ ๋„๊ตฌ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์Šคํƒ์— ์ฐจ๋ก€๋Œ€๋กœ ์Œ“์•„๋‘” ์ธ์ž๋“ค์„, ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ œ๊ณตํ•œ โ€˜์„œ์‹ ๋ฌธ์ž์—ดโ€™์ด๋ผ๋Š” ์ง€๋„๋ฅผ ๋ณด๊ณ  ์˜ฌ๋ฐ”๋ฅธ ํฌ๊ธฐ(ํƒ€์ž…)๋งŒํผ์”ฉ ์ˆœ์„œ๋Œ€๋กœ ์ฝ์–ด ๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด๋‹ค.

printf ํ•จ์ˆ˜๋Š” ์„œ์‹ ์ง€์ •์ž %d๋ฅผ ๋ณด๊ณ  โ€œ๋‹ค์Œ์— ์˜ฌ ์ธ์ž๋Š” int ํฌ๊ธฐ๋งŒํผ ์ฝ์–ด์•ผ๊ฒ ๊ตฐโ€์ด๋ผ๊ณ  ์‹ ๋ขฐํ•˜๊ณ  va_arg๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. ๋งŒ์•ฝ ์ด ์‹ ๋ขฐ๊ฐ€ ๊นจ์ง€๋ฉด(์˜ˆ: %d์— char*๋ฅผ ์ „๋‹ฌ), ํ”„๋กœ๊ทธ๋žจ์€ ๊ณง๋ฐ”๋กœ ์ •์˜๋˜์ง€ ์•Š์€ ๋™์ž‘(Undefined Behavior)์˜ ๋‚˜๋ฝ์œผ๋กœ ๋–จ์–ด์ง„๋‹ค.

๐Ÿงฉ ์„œ์‹ ์ง€์ •์ž ํŒŒ์‹ฑ: ์ž‘์€ ์–ธ์–ด์˜ ํ•ด์„๊ธฐ(Interpreter) ๋งŒ๋“ค๊ธฐ

์ฒ˜์Œ ๊ธฐ๋ณธ์ ์ธ ๋ฉ”์„œ๋“œ์˜ ๊ตฌ์กฐ๋Š” ft_printf์˜ ๋ณธ์งˆ์€ ์„œ์‹ ๋ฌธ์ž์—ด(format string)์ด๋ผ๋Š” ์ž‘์€ ์–ธ์–ด๋ฅผ ํ•ด์„ํ•˜๊ณ , ๊ทธ์— ๋งž๋Š” ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์€ ํ•ด์„๊ธฐ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์•˜๋‹ค.

  1. ๋ฌธ์ž์—ด ์ˆœํšŒ ๋ฐ ๋ถ„๊ธฐ: ํ”„๋กœ๊ทธ๋žจ์€ ์ „๋‹ฌ๋ฐ›์€ ์„œ์‹ ๋ฌธ์ž์—ด์„ ๋ฃจํ”„๋ฅผ ํ†ตํ•ด ํ•œ ๊ธ€์ž์”ฉ ์ฝ๋‹ค๊ฐ€, ์ œ์–ด ๋ฌธ์ž์ธ %๋ฅผ ๋งŒ๋‚˜๋ฉด ํ•ด์„๊ธฐ ๋ชจ๋“œ๋กœ ์ „ํ™˜๋œ๋‹ค. ์ดํ›„ ๋”ฐ๋ผ์˜ค๋Š” ๋ฌธ์ž์— ๋”ฐ๋ผ ์–ด๋–ค ์ข…๋ฅ˜์˜ โ€˜๋ฒˆ์—ญโ€™์„ ์ˆ˜ํ–‰ํ• ์ง€ ๊ฒฐ์ •ํ•ด์•ผ ํ–ˆ๋‹ค.
  2. ๋ฐ์ดํ„ฐ ํƒ€์ž…๋ณ„ ๋ฒˆ์—ญ:
    • c, s, %: ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋ฒˆ์—ญ. ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋Œ€๋กœ ํ‘œํ˜„ํ•˜๊ฑฐ๋‚˜(c, s), ์ œ์–ด ๋ฌธ์ž๋ฅผ ์ผ๋ฐ˜ ๋ฌธ์ž๋กœ ํƒˆ์ถœ(%%)์‹œํ‚ค๋Š” ์—ญํ• ์„ ๋‹ด๋‹นํ–ˆ๋‹ค. ํŠนํžˆ s ์ฒ˜๋ฆฌ ์‹œ NULL ํฌ์ธํ„ฐ๊ฐ€ ๋“ค์–ด์˜ค๋Š” ์˜ˆ์™ธ ์ƒํ™ฉ์„ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฃฐ์ง€๋Š” โ€˜์•ˆ์ •์„ฑโ€™์— ๋Œ€ํ•œ ์ฒซ ๋ฒˆ์งธ ์‹œํ—˜๋Œ€์˜€๋‹ค.
    • d, i, u: 2์ง„์ˆ˜๋กœ ์ €์žฅ๋œ ์ •์ˆ˜ ๋ฐ์ดํ„ฐ๋ฅผ 10์ง„์ˆ˜ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ•ต์‹ฌ์ ์ธ ๋ฒˆ์—ญ ๊ณผ์ •. libft์—์„œ ๋งŒ๋“  ft_itoa๋ฅผ ํ™œ์šฉํ•˜๊ณ , ๋ถ€ํ˜ธ ์—†๋Š” ์ •์ˆ˜(unsigned int)๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ฉฐ ์ปดํ“จํ„ฐ์˜ ์ˆซ์ž ํ‘œํ˜„ ๋ฒ”์œ„๋ฅผ ๋‹ค์‹œ ํ•œ๋ฒˆ ์ƒ๊ธฐํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.
    • x, X: 10์ง„๋ฒ•์— ์ต์ˆ™ํ•œ ์ธ๊ฐ„์˜ ์‹œ๊ฐ์„ 16์ง„๋ฒ•์œผ๋กœ ๋ฐ”๊พธ๋Š” ๋ฒˆ์—ญ. ์ด๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋‚˜ ๋น„ํŠธ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ๋•Œ ์™œ 16์ง„๋ฒ•์ด ์œ ์šฉํ•œ์ง€์— ๋Œ€ํ•œ ์‹ค์šฉ์ ์ธ ์ดํ•ด๋กœ ์ด์–ด์กŒ๋‹ค.
    • p: ๊ฐ€์žฅ ์ถ”์ƒ์ ์ธ ๊ฐœ๋…์ธ โ€˜๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œโ€™๋ฅผ ๋ˆˆ์— ๋ณด์ด๋Š” 16์ง„์ˆ˜ ๋ฌธ์ž์—ด๋กœ ์‹œ๊ฐํ™”ํ•˜๋Š” ๋ฒˆ์—ญ. ์ด๋Š” ํฌ์ธํ„ฐ๋ผ๋Š” ๊ฐœ๋…์„ ๋‹จ์ˆœํ•œ ๋ณ€์ˆ˜๊ฐ€ ์•„๋‹Œ, ์‹ค์ œ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์˜ ํ•œ ์ ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ตฌ์ฒด์ ์ธ ๊ฐ’์œผ๋กœ ์ธ์ง€ํ•˜๊ฒŒ ๋งŒ๋“ค์—ˆ๋‹ค.

๐Ÿ—๏ธ ์ฝ”๋“œ ๊ตฌ์กฐํ™”์˜ ์—ฌ์ •: ๊ธฐ๋Šฅ์—์„œ ์„ค๊ณ„๋กœ

์ดˆ๊ธฐ ๋ฒ„์ „์€ ๊ฑฐ๋Œ€ํ•œ if-else ํ˜น์€ switch ๋ฌธ ์•ˆ์— ๋ชจ๋“  ๋ณ€ํ™˜ ๋กœ์ง์„ ๋‹ด์œผ๋ ค๋Š” ์‹œ๋„๋ฅผ ํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Š” ๊ณง ์œ ์ง€๋ณด์ˆ˜์˜ ์žฌ์•™์œผ๋กœ ์ด์–ด์ง„๋‹ค๋Š” ๊ฒƒ์„ ๋น ๋ฅด๊ฒŒ ๊นจ๋‹ฌ์•˜๋‹ค.

โ€˜์ฒ˜๋ฆฌโ€™์˜ ๋‹จ์œ„๋ฅผ ์ฒ˜์Œ์—๋Š” ์–ด์ฐจํ”ผ ๋น„์Šทํ•œ ๊ธฐ๋Šฅ๋“ค์˜ ๋‚˜์—ด์ด๊ณ , ๊ทธ๋Ÿฌ๋‹ˆ ์ „์ฒด๋ฅผ ๋ชจ๋“  ๋กœ์ง์—์„œ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ํ•˜๋Š” ๊ตฌ์กฐ๋Š”, ์–ด์ฉŒ๋ฉด ์‚ฌ๋žŒ์˜ ์ธ์‹์—์„œ๋Š” ๋‹น์—ฐํ•œ ๊ฒƒ์ด๋‹ค. ๋…ธ์…˜์— ๋กœ์ง์„ ์„ค๊ณ„ํ•˜๋˜ ๋‹น์‹œ, ์–ผ๋งˆ๋‚˜ ๊ดœ์ฐฎ๋‹ค๊ณ  ๋А๊ผˆ๋Š”์ง€- ์ƒ๊ฐ๋ณด๋‹ค ์ž์‹ ๊ฐ์žˆ๊ฒŒ ๊ทธ ์„ค๊ณ„๋ฅผ ๊ดœ์ฐฎ๋‹ค๊ณ  ๋™๋ฃŒ๋“ค์—๊ฒŒ๋„ ์ž๋ž‘ํ–ˆ๋˜ ๊ธฐ์–ต์ด ๋‚œ๋‹ค.

ํ•˜์ง€๋งŒ ์œ„์—์„œ ๋งํ•œ ๋“ฏ ์žฌ์•™์ด ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์€ ๋ช…ํ™•ํ–ˆ๋‹ค. ๋ฉ”์„œ๋“œ๋กœ ๊ตฌ๋ถ„๋˜์ง€ ๋ชปํ•˜๊ณ , if-else, switch ์˜ ์‚ฌ์šฉ์€ ๊ฒฐ๊ตญ ํ•œ ๋‹จ์–ด, ํ•œ ๊ธ€์ž๋งˆ๋‹ค ์กฐ๊ฑด๋ฌธ์„ ๋„๋Š” ๊ฒƒ์ด์—ˆ๊ณ , ์ˆ˜ ๋งŽ์€ ์˜ˆ์™ธ ์ผ€์ด์Šค๋“ค์„ ๋งŒ๋‚˜๋Š” ์ˆœ๊ฐ„ ์–ด๋””์„œ ์–ด๋–ค ์—๋Ÿฌ๊ฐ€ ๋‚˜๋Š”์ง€๋ฅผ ์•Œ๊ธฐ๊ฐ€ ๋งค์šฐ ๊นŒ๋‹ค๋กœ์› ๋‹ค.

์‹ฌ์ง€์–ด ๊ฐ™์€ ๋กœ์ง์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋Š” ์กฐ๊ฑด๋“ค๋„, ๊ฒฐ๊ตญ ๊ฒน์น˜๊ณ  ์–ฝํžˆ๋‹ค๋ณด๋ฉด ๋…ผ๋ฆฌ์ ์œผ๋กœ ๋นˆํ‹ˆ์ด ์ƒ๊ธฐ๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์—ˆ๊ณ , ์ด๋Ÿฌํ•œ ์‚ฌ์‹ค์€ ๋ฉ”์„œ๋“œ ๋กœ ๊ตฌ๋ถ„์„ ํ•˜๊ณ , ๋กœ์ง์„ ๋ชจ๋“ˆํ™” ํ•˜๋Š” ๊ฒƒ์ด ์™œ ์ค‘์š”ํ•œ์ง€, ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๋…ผ๋ฆฌ์˜ ๋‹จ์œ„๋ฅผ ์–ผ๋งˆ๋‚˜ ์ž‘๊ฒŒ ํ•ด์•ผ ํ•˜๋Š”์ง€ ์•„์ฃผ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ์˜€๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

๋˜ํ•œ ์ €์žฅ ๋ฐ ์ถœ๋ ฅ์„ ํ•  ๋•Œ ์„œ์‹ ์ง€์ •์ž๋ฅผ ๋งŒ๋‚  ๋•Œ๋งˆ๋‹ค write ์‹œ์Šคํ…œ ์ฝœ์„ ์ง์ ‘ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹๊ณผ, ์ถœ๋ ฅํ•  ๋ฌธ์ž์—ด ์กฐ๊ฐ๋“ค์„ ์ž๋ฃŒ๊ตฌ์กฐ(์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ๋“ฑ)์— ๋‹ด์•„๋‘์—ˆ๋‹ค๊ฐ€ ๋งˆ์ง€๋ง‰์— ํ•œ ๋ฒˆ์— ์ถœ๋ ฅํ•˜๋Š” ๋ฐฉ์‹ ์‚ฌ์ด์—์„œ ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ ์„ฑ๋Šฅ์˜ ์ฐจ์ด๋ฅผ ๋А๊ปด ์ง์ ‘ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ์˜ ๊ฐœ์„ ๋˜๋Š” ๊ณผ์ • ๋“ฑโ€ฆ

๋‹จ์ˆœํžˆ โ€˜๊ธฐ๋Šฅ ๊ตฌํ˜„โ€™์„ ๋„˜์–ด โ€˜ํšจ์œจ์ ์ธ ์„ค๊ณ„โ€™์— ๋Œ€ํ•œ ์•„์ฃผ ํฐ ๊ณ ๋ฏผ๋“ค์˜ ์ฒซ ๋ฌธํ„ฑ์ด ์•„๋‹ˆ์—ˆ๋‚˜ ์‹ถ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ๊นŒ์ง€ ์™€์„œ์•ผ ๋น„๋กœ์†Œ ๋ณต์žกํ•œ ๋ฌธ์ œ๋ฅผ ์ž˜๊ฒŒ ๋‚˜๋ˆ„์–ด ์ •๋ณตํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™์˜ ๊ธฐ๋ณธ ์›์น™์„ ์ฒด๋“ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

โœจ ์„ฑ์ฐฐ ๋ฐ ๋ฐฐ์šด ์ 

ft_printf๋Š” ๋งค์ผ ์‚ฌ์šฉํ•˜๋˜ ๋„๊ตฌ์˜ ๋‚ด๋ถ€๋ฅผ ๋ถ„ํ•ดํ•˜๊ณ  ์žฌ์กฐ๋ฆฝํ•ด๋ณด๋Š” ์†Œ์ค‘ํ•œ ๊ฒฝํ—˜์ด์—ˆ๋‹ค.

  • ์ถ”์ƒํ™”์˜ ์ด๋ฉด: printf๋ผ๋Š” ํŽธ๋ฆฌํ•œ ์ถ”์ƒํ™” ๊ณ„์ธต ๋•๋ถ„์— ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋–ป๊ฒŒ โ€˜ํ‘œํ˜„โ€™๋˜๋Š”์ง€์— ๋Œ€ํ•œ ๊ณ ๋ฏผ ์—†์ด ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๊ทธ ์ด๋ฉด์—๋Š” ๊ฐ€๋ณ€ ์ธ์ž ์ฒ˜๋ฆฌ, ๋ฐ์ดํ„ฐ ํƒ€์ž… ๋ณ€ํ™˜, ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋“ฑ ์ˆ˜๋งŽ์€ ๋ณต์žกํ•œ ๊ณผ์ •์ด ์ˆจ์–ด์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค.
  • ์‹ ๋ขฐ ๊ธฐ๋ฐ˜์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ: C์–ธ์–ด์˜ ๊ฐ€๋ณ€ ์ธ์ž ๊ธฐ๋Šฅ์€ ํƒ€์ž… ์ฒดํฌ๋ฅผ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์•„๋‹Œ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ์ฑ…์ž„์œผ๋กœ ๋Œ๋ฆฐ๋‹ค. ์ด๋Š” ์œ ์—ฐํ•จ์„ ์ œ๊ณตํ•˜๋Š” ๋Œ€์‹ , ์‚ฌ์†Œํ•œ ์‹ค์ˆ˜๊ฐ€ ํ”„๋กœ๊ทธ๋žจ ์ „์ฒด๋ฅผ ๋ฌด๋„ˆ๋œจ๋ฆด ์ˆ˜ ์žˆ๋Š” ์œ„ํ—˜์„ฑ์„ ๋‚ดํฌํ•˜๊ณ  ์žˆ์Œ์„, ์ฆ‰ C์–ธ์–ด๊ฐ€ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ฅผ ์–ผ๋งˆ๋‚˜ ์‹ ๋ขฐํ•˜๋Š”(ํ˜น์€ ๋ฐฉ์ž„ํ•˜๋Š”) ์–ธ์–ด์ธ์ง€ ๋ชธ์†Œ ์ฒดํ—˜ํ–ˆ๊ณ , ๊ทธ๋ ‡๊ธฐ์— ์–ด๋–ป๊ฒŒ ๋Œ€์‘ํ•ด๋‘๋Š” ๊ฒƒ, ์—๋Ÿฌ ํ•ธ๋“ค๋ง์„ ์–ด๋–ค ์‹์œผ๋กœ ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์‹œ์Šคํ…œ ์ „์ฒด์˜ ์•ˆ์ „์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ๋ฐฐ์šฐ๋Š” ๊ธฐํšŒ๊ฐ€ ๋˜์—ˆ๋‹ค.
  • ๋ฌธ์ œ ๋ถ„ํ• ์˜ ์ค‘์š”์„ฑ: ํ•˜๋‚˜์˜ ๊ฑฐ๋Œ€ํ•œ ๋ฌธ์ œ๋ฅผ โ€˜ํŒŒ์‹ฑโ€™, โ€˜์ •์ˆ˜ ๋ณ€ํ™˜โ€™, โ€˜16์ง„์ˆ˜ ๋ณ€ํ™˜โ€™ ๋“ฑ ์ž‘๊ณ  ๋ช…ํ™•ํ•œ ๋‹จ์œ„์˜ ํ•จ์ˆ˜๋กœ ๋‚˜๋ˆ„๋Š” ๊ณผ์ •์€, ์ดํ›„ ๋” ๋ณต์žกํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งˆ์ฃผํ–ˆ์„ ๋•Œ ์–ด๋–ป๊ฒŒ ์ ‘๊ทผํ•ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ํ›Œ๋ฅญํ•œ ํ›ˆ๋ จ์ด ๋˜์—ˆ๋‹ค.

๊ฒฐ๋ก ์ ์œผ๋กœ ft_printf๋Š” ๋‹จ์ˆœํžˆ ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“œ๋Š” ๊ณผ์ œ๊ฐ€ ์•„๋‹ˆ์—ˆ๋‹ค. ์ปดํ“จํ„ฐ ๋‚ด๋ถ€์˜ ๋น„ํŠธ(bit) ๋ฉ์–ด๋ฆฌ๋ฅผ ์ธ๊ฐ„์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์˜๋ฏธ ์žˆ๋Š” ์ •๋ณด๋กœ โ€˜๋ฒˆ์—ญโ€™ํ•˜๊ณ  โ€˜ํ‘œํ˜„โ€™ํ•˜๋Š” ์ฑ…์ž„์ด ์ „์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋จธ์—๊ฒŒ ์žˆ์Œ์„ ๊นจ๋‹ซ๊ฒŒ ํ•œ, ๊ฐœ๋ฐœ์ž๋กœ์„œ์˜ ์ฑ…์ž„๊ฐ๊ณผ ์‹œ์•ผ๋ฅผ ํ•œ ๋‹จ๊ณ„ ๋„“ํ˜€์ค€ ํ”„๋กœ์ ํŠธ์˜€๋‹ค.