์ƒˆ์†Œ์‹

๐Ÿณ 42 SEOUL

[C / 42seoul / ft_printf] - ์„œ์‹ ์ง€์ •์ž (format specifier)

  • -

 

 

%[ํ”Œ๋ž˜๊ทธ][ํญ][.์ •๋ฐ€๋„][๊ธธ์ด]์„œ์‹์ง€์ •์ž

 

printf๋Š” ํ”Œ๋ž˜๊ทธ, ํญ, ์ •๋ฐ€๋„, ๊ธธ์ด ๊ทธ๋ฆฌ๊ณ  ์„œ์‹์ง€์ •์ž๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜์ด๋‹ค.

ft_printf ๊ณผ์ œ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด ํ•˜๋‚˜ํ•˜๋‚˜ ๋œฏ์–ด๋ด์•ผ๊ฒ ๋‹ค.

 

์„œ์‹์ง€์ •์ž : csdiupxX%

<stdio.h>์˜ printf์—๋Š” ๋” ๋‹ค์–‘ํ•œ ์„œ์‹์ง€์ •์ž๊ฐ€ ์žˆ์œผ๋‚˜, ft_printf์—์„œ ๊ตฌํ˜„ํ•  ์„œ์‹์ง€์ •์ž ํƒ€์ž…์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  • c : character , (va_arg type : int)
  • s : string , (va_arg type : string)
  • p: pointer (ํฌ์ธํ„ฐ ์ฃผ์†Œ) (va_arg type : long long)
  • d : signed int (va_arg type : int)
  • i : signed int (va_arg type : int)
  • u : unsigned int (va_arg type : unsigned int)
  • x / X : unsigned 16์ง„์ˆ˜ (x์™€ X๋Š” 16์ง„์ˆ˜์˜ ๋Œ€์†Œ๋ฌธ์ž ์ฐจ์ด) (va_arg type : unsigned int)

 

 

์„œ์‹์ง€์ •์ž์—์„œ d ์™€ i ์˜ ์ฐจ์ด

(d ์™€ i ๋Š” printf ์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ™์œผ๋‚˜, scanf ์—์„œ๋Š” ์—ญํ• ์ด ๋‹ค๋ฅด๋‹ค๊ณ  ํ•œ๋‹ค. d : 10์ง„์ˆ˜ ์ž…๋ ฅ๋ฐ›์Œ, i : 10/8/16์ง„์ˆ˜ ์ž…๋ ฅ ๋ฐ›์Œ)

 

 

character์˜ va_arg ํƒ€์ž…์ด int์ธ ์ด์œ 

  • GCC(Cํ‘œ์ค€)์—์„œ๋Š” ๊ฐ€๋ณ€์ธ์ž๋กœ ๋ฐ›์€ ๊ฐ’์ด int๋ณด๋‹ค ์ž‘๋‹ค๋ฉด int๋ฅผ ์ง€์ •ํ•ด์•ผํ•œ๋‹ค.
  • float๋Š” double๋กœ ์ง€์ •ํ•ด์•ผ ํ•œ๋‹ค.

 

 

ํ”Œ๋ž˜๊ทธ

  • - : ์™ผ์ชฝ ์ •๋ ฌ (๊ธฐ๋ณธ๊ฐ’์€ ์˜ค๋ฅธ์ชฝ ์ •๋ ฌ์ด๋‹ค)
  • + : ์–‘์ˆ˜์ผ ๋•Œ๋Š” + ๋ถ€ํ˜ธ, ์Œ์ˆ˜์ผ๋•Œ๋Š” - ๋ถ€ํ˜ธ ์ถœ๋ ฅ
  • (๊ณต๋ฐฑ) : ์Œ์ˆ˜์ผ๋•Œ๋งŒ - ๋ถ€ํ˜ธ ์ถœ๋ ฅ
  • * : ๊ฐ€๋ณ€์ธ์ž๋กœ ํญ์„ ๋ฐ›์•„๋‚ธ๋‹ค.
  • 0 : ์ถœ๋ ฅํ•˜๋Š” ํญ์˜ ๋‚จ๋Š” ๊ณต๊ฐ„์„ 0์œผ๋กœ ์ฑ„์›Œ๋„ฃ๋Š”๋‹ค.

 

 

ํญ

  • ์ˆซ์ž : ์ง€์ •ํ•œ ์ˆซ์ž๋งŒํผ ํญ์„ ์ง€์ •ํ•˜์—ฌ ์ถœ๋ ฅํ•œ๋‹ค. ์‹ค์ˆ˜๋Š” .(์†Œ์ˆ˜์ ) , e+๊นŒ์ง€ ํญ์— ํฌํ•จ๋œ๋‹ค.
  • ์ถœ๋ ฅํ•  ๊ฐ’์ด ์ง€์ •ํ•œ ํญ๋ณด๋‹ค ์ž‘์œผ๋ฉด ์ž๋ฆฟ์ˆ˜๋ฅผ ๋งž์ถ”๊ธฐ ์œ„ํ•ด ๊ณต๋ฐฑ ๋˜๋Š” 0์„ ์ฑ„์›Œ ๋„ฃ๋Š”๋‹ค.
  • ์ถœ๋ ฅ๊ฐ’์ด ์ง€์ •๋œ ํญ ๋ณด๋‹ค ํฌ๋‹ค๋ฉด ํญ์€ ๋ฌด์‹œ๋œ๋‹ค.
  • width์— ์Œ์ˆ˜๊ฐ€ ํ• ๋‹น๋˜๋ฉด -ํ”Œ๋ž˜๊ทธ(์ขŒ์ธก์ •๋ ฌ) + width๋กœ ๊ฐ„์ฃผํ•œ๋‹ค.
  • ํญ์€ * ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ€๋ณ€์ธ์ž๋กœ๋„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

 

 

์ •๋ฐ€๋„

  • ํญ๊ณผ ๊ตฌ๋ถ„๋˜๋„๋ก ์•ž์— dot(.)์„ ์ฐ์–ด ์ž…๋ ฅํ•ด์•ผํ•œ๋‹ค.
  • ์ถœ๋ ฅํ•  ๊ฐ’์˜ ์ •๋ฐ€๋„๋ฅผ ์œ„ํ•œ ์ž๋ฆฟ์ˆ˜๋ฅผ ์„ค์ •ํ•œ๋‹ค.
  • ํ˜•์‹ ๋ฌธ์ž์—ด์—์„œ ์ •๋ฐ€๋„๋ฅผ ๋‚˜ํƒ€๋‚ด์ง€๋Š” ์•Š์ง€๋งŒ ๋’ค์— ์ธ์ž๋กœ ์ •๋ฐ€๋„ ๊ฐ’์„ ์ค€๋‹ค. ์ด ๋•Œ ์ธ์ž๋Š” ํ˜•์‹ ํƒœ๊ทธ๊ฐ€ ์ ์šฉ๋˜๋Š” ๋ฐ์ดํƒ€ ์•ž์— ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • ์ถœ๋ ฅ๊ฐ’ ์ •์ˆ˜(d, i)์ผ ๋•Œ : ์„ค์ •ํ•œ ์ •๋ฐ€๋„๋ฅผ ๋งž์ถ”๊ธฐ ์œ„ํ•ด ์ž๋ฆฟ์ˆ˜ ๋งŒํผ 0์„ ์ถ”๊ฐ€ํ•œ๋‹ค. ์ถœ๋ ฅ๊ฐ’์˜ ๊ธธ์ด๊ธฐ ๋” ๊ธธ๋‹ค๋ฉด, ์ •๋ฐ€๋„๋Š” ๋ฌด์‹œ๋œ๋‹ค.
  • ์ถœ๋ ฅํ•  ๊ฐ’์ด ์‹ค์ˆ˜์ผ ๋•Œ : ๋ฐ˜์˜ฌ๋ฆผ ํ˜น์€ ์†Œ์ˆ˜์  ์ดํ•˜์— 0์„ ๋ถ™์—ฌ์„œ, ์ •๋ฐ€๋„ ๋งŒํผ์˜ ์†Œ์ˆ˜์  ์ž๋ฆฌ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ์‹ค์ˆ˜ ์ „์ฒด์˜ ์ž๋ฆฟ์ˆ˜ ์„ค์ •์€ width์˜ต์…˜์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • ์ •๋ฐ€๋„์— ์Œ์ˆ˜๊ฐ€ ํ• ๋‹น๋˜๋ฉด ๋ฌด์‹œ๋œ๋‹ค.

 

ft_printf ๊ตฌํ˜„์‹œ ๊ณ ๋ คํ•  ์ 

  • -ํ”Œ๋ž˜๊ทธ์™€ 0ํ”Œ๋ž˜๊ทธ๊ฐ€ ๊ฐ™์ด ์žˆ๋‹ค๋ฉด 0์€ ๋ฌด์‹œ๋œ๋‹ค.
  • ์ •๋ฐ€๋„์™€ 0ํ”Œ๋ž˜๊ทธ๊ฐ€ ๊ฐ™์ด ์žˆ์–ด๋„ 0์€ ๋ฌด์‹œ๋œ๋‹ค.
  • ์„ค์ •ํ•œ ํญ๋ณด๋‹ค ์ถœ๋ ฅํ•  ๋‚ด์šฉ์ด ๋” ๊ธธ๋‹ค๋ฉด ? ํญ์€ ๋ฌด์‹œ๋œ๋‹ค.
  • ํญ์€ *๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€๋ณ€์ธ์ž๋กœ ๊ฐ’์„ ๋ฐ›์•„์˜ฌ ์ˆ˜๋„ ์žˆ๋‹ค.
  • ์ •๋ฐ€๋„๋„ *๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€๋ณ€์ธ์ž๋กœ ๊ฐ’์„ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ๋‹ค.
  • ์ •๋ฐ€๋„์™€ ์ •์ˆ˜๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด, '0'์„ ์ฑ„์›Œ๋„ฃ์–ด ์ถœ๋ ฅ๋œ๋‹ค.

 

 

Contents

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

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