์„ ์ปดํ”Œ๋ผ์ด ํ–ˆ์„ ๋•Œ, ์˜ค๋ฅ˜

printf๋ฅผ fprintf๋กœ ์ž‘์„ฑํ•˜๋ฉด ์˜ค๋ฅ˜ ์—†์–ด์ง.

 

์ฐธ๊ณ :

 https://haruhiism.tistory.com/8

 

 

printf, fprintf, sprintf๋Š” ์–ด๋–ค ์ฐจ์ด์ผ๊นŒ?

C/C++ ์—์„œ๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ถœ๋ ฅ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. C์–ธ์–ด์˜ printf๋ถ€ํ„ฐ C++์˜ cin๊นŒ์ง€ ๋‹ค์–‘ํ•œ ํ•จ์ˆ˜, ๊ฐ์ฒด์™€ ๋ฉ”์†Œ๋“œ๊ฐ€ ์žˆ์ง€๋งŒ ๊ทธ ์ค‘ ์„œ์‹ํ™”๋œ ์ถœ๋ ฅ์— ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํ•จ์ˆ˜๋ฅผ ์†Œ๊ฐœํ•ด ๋ณด๋ ค

haruhiism.tistory.com

 

C/C++ ์—์„œ๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ถœ๋ ฅ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. C์–ธ์–ด์˜ printf๋ถ€ํ„ฐ C++์˜ cin๊นŒ์ง€ ๋‹ค์–‘ํ•œ ํ•จ์ˆ˜, ๊ฐ์ฒด์™€ ๋ฉ”์†Œ๋“œ๊ฐ€ ์žˆ์ง€๋งŒ ๊ทธ ์ค‘ ์„œ์‹ํ™”๋œ ์ถœ๋ ฅ์— ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํ•จ์ˆ˜๋ฅผ ์†Œ๊ฐœํ•ด ๋ณด๋ ค ํ•œ๋‹ค.

 

1. printf()

int printf(const char *format-string, argument-list);

์ผ๋ฐ˜์ ์œผ๋กœ printf()๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์Œ๋”ฐ์˜ดํ‘œ(")๋กœ ์‹ธ์ธ ๋ฌธ์ž์—ด๊ณผ ๋ฌธ์ž์—ด์—์„œ %๋กœ ์ง€์ •๋œ ์„œ์‹ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ฐ™์ด ์ „๋‹ฌํ•˜์—ฌ ์ถœ๋ ฅํ•œ๋‹ค. ๋˜ํ•œ ์ค„๋ฐ”๊ฟˆ, ์ปค์„œ ์ด๋™ ๋“ฑ์„ ์œ„ํ•ด ์ด์Šค์ผ€์ดํ”„ ์‹œํ€€์Šค๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค.

 

์ด๋Š” ๊ฐ„๋‹จํ•œ ์„œ์‹์„ ๊ณ ๋ คํ•œ ์ถœ๋ ฅ์— ์‚ฌ์šฉ๋˜๋ฉฐ ๊ฐ€์žฅ ๋งŽ์ด ์ ‘ํ•˜๊ณ  ํ•™์Šต ์ดˆ๊ธฐ์— ์ต์ˆ™ํ•ด์ ธ์•ผ ํ•  ํ•ต์‹ฌ์ ์ธ ํ•จ์ˆ˜๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

#include <stdio.h>

int main()
{
    printf("Hello World!")
}

 

C์–ธ์–ด ๊ด€๋ จ ๋„์„œ๋ฅผ ํ•œ๋ฒˆ๋งŒ์ด๋ผ๋„ ํŽผ์ณ๋ณด์•˜๋‹ค๋ฉด ์œ„์™€ ๊ฐ™์€ Hello World์˜ˆ์ œ๊ฐ€ ๊ธฐ์–ต๋‚  ๊ฒƒ์ด๋‹ค.

์ด๋ ‡๊ฒŒ๋งŒ ๋ณด๋ฉด ๊ฐ„๋‹จํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ํ•จ์ˆ˜๋กœ ๋ณด์ด์ง€๋งŒ, ์•„๋ž˜์˜ ์ถœ์ฒ˜ ๋งํฌ๋งŒ ๋“ค์–ด๊ฐ€ ๋ณด์•„๋„ ์—„์ฒญ๋‚œ ์–‘์˜ ๋งค๋‰ด์–ผ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ฆ‰ ๊ต‰์žฅํžˆ ๋ณต์žกํ•œ ํ•จ์ˆ˜๋ผ๋Š” ๊ฒƒ์ด๋‹ค.

 

๊ฐ„๋žตํžˆ ์ •๋ฆฌํ•˜๊ณ  ๋“ค์–ด๊ฐ€์ž๋ฉด ์ด printf()๊ฐ€ ํ•˜๋Š” ๊ฒƒ์€ ์„œ์‹ํ™”๋œ ๋ฌธ์ž์—ด์„ ํ‘œ์ค€ ์ถœ๋ ฅ(Standard Output, stdout)์— ๋ณด๋‚ด๋Š” ๊ฒƒ์ด๋‹ค.

์ด๋Ÿฐ stdout, stdin, stderr๋“ฑ์€ ํ‘œ์ค€ ์ŠคํŠธ๋ฆผ์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š”๋ฐ ์ด๋Š” ์œ ๋‹‰์Šค ์šด์˜์ฒด์ œ์˜ ์œ ์‚ฐ์œผ๋กœ ์ปดํ“จํ„ฐ์™€ ์‚ฌ์šฉ์ž ์‚ฌ์ด์—์„œ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์ง„ํ–‰๋˜๋Š” ์ž…์ถœ๋ ฅ์„ ์ถ”์ƒ์ ์œผ๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉ์„ ์œ„ํ•ด ๋”ฐ๋กœ ์ž‘์—…์„ ํ•  ํ•„์š”๋Š” ์—†์œผ๋ฉฐ <stdio.h> ํ—ค๋” ํŒŒ์ผ์— ํฌํ•จ๋˜์–ด ์žˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด๊ณณ์„ ์ฐธ๊ณ ํ•˜์ž. 

 

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

 

 

ํ•˜์ง€๋งŒ ์ค‘์š”ํ•œ ๊ฒƒ์€ printf() ์˜ ์„œ์‹ ๊ธฐ๋Šฅ์„ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€, ๊ทธ๋ฅผ ์–ด๋–ป๊ฒŒ ์‘์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค.

ํ•จ์ˆ˜์˜ ์›ํ˜•์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด printf()๋Š” const char* ํ˜• ๋ฌธ์ž์—ด(format-string)๊ณผ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ชฉ๋ก(argument-list)๋ฅผ ๋ฐ›๋Š”๋ฐ ์ „์ž์˜ ๊ฒฝ์šฐ const char* ํ˜• ๋ฌธ์ž์—ด์€ ์ฝ”๋”ฉ ๋‹จ๊ณ„์—์„œ๋ถ€ํ„ฐ ํฐ๋”ฐ์˜ดํ‘œ(")๋กœ ๋ฌถ์ธ ๋ฌธ์ž์—ด ์ƒ์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

 

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

๊ทธ๋ ‡๋‹ค๋ฉด ๋’ค์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ชฉ๋ก์—๋Š” ๋‹น์—ฐํžˆ ์ด ๋ฌธ์ž์—ด ์ƒ์ˆ˜์—์„œ ์ง€์ •๋œ ํ˜•์‹์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋“ค์ด ์ˆœ์„œ์— ๋งž๊ฒŒ ๋“ค์–ด๊ฐˆ ๊ฒƒ์ด๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์ด 'ํ˜•์‹'์ด๋ž€ ๊ฒƒ์€ ๋ฌด์—‡์ผ๊นŒ?

 

๋Œ€๋ถ€๋ถ„์˜ C์–ธ์–ด ๊ต์žฌ์—๋Š” ์ด printf()์— ์‚ฌ์šฉ๋˜๋Š” ํ˜•์‹ ์ง€์ •์ž๋“ค์˜ ๋ชฉ๋ก์ด ๋‚˜์—ด๋˜์–ด ์žˆ๋‹ค.

 

specifierOutputExample

or i Signed decimal integer 392
u Unsigned decimal integer 7235
o Unsigned octal 610
x Unsigned hexadecimal integer 7fa
X Unsigned hexadecimal integer (uppercase) 7FA
f Decimal floating point, lowercase 392.65
F Decimal floating point, uppercase 392.65
e Scientific notation (mantissa/exponent), lowercase 3.9265e+2
E Scientific notation (mantissa/exponent), uppercase 3.9265E+2
g Use the shortest representation: %e or %f 392.65
G Use the shortest representation: %E or %F 392.65
a Hexadecimal floating point, lowercase -0xc.90fep-2
A Hexadecimal floating point, uppercase -0XC.90FEP-2
c Character a
s String of characters sample
p Pointer address b8000000
n Nothing printed.
The corresponding argument must be a pointer to a signed int.
The number of characters written so far is stored in the pointed location.
 
% A % followed by another % character will write a single % to the stream. %

 

ํผ์„ผํŠธ ๊ธฐํ˜ธ(%)์™€ ๊ทธ ๋’ค์— ๋ถ™๋Š” ๋ฌธ์ž๋กœ ๊ตฌ์„ฑ๋˜๋Š” ํ˜•์‹ ์ง€์ •์ž๋Š” ์—ฌ๋Ÿฌ ์ข…๋ฅ˜๊ฐ€ ์žˆ์ง€๋งŒ ์ž์ฃผ ์“ฐ์ด๋Š” ๊ฒƒ๋“ค์„ ๋ช‡ ๊ฐœ ์ถ”๋ ค๋ณด์ž๋ฉด

  • %d : ์ •์ˆ˜(int) ์ถœ๋ ฅ
  • %f : ์†Œ์ˆ˜(float) ์ถœ๋ ฅ
  • %lf : ์†Œ์ˆ˜(double) ์ถœ๋ ฅ
  • %c : ๋ฌธ์ž(char) ์ถœ๋ ฅ
  • %s : ๋ฌธ์ž์—ด(char[], char*) ์ถœ๋ ฅ
  • %p : ํฌ์ธํ„ฐ ์ฃผ์†Œ(1a2b3c4d๊ฐ™์€ 16์ง„์ˆ˜) ์ถœ๋ ฅ

๋“ฑ์œผ๋กœ ๊ฐ„์ถ”๋ฆด ์ˆ˜ ์žˆ๋‹ค. ์ด๋“ค์€ ํ˜•์‹ ์ง€์ •์ž์™€ ์ด์— ์ƒ์‘ํ•˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ž๋ฃŒํ˜•์ด ์ผ์น˜ํ•˜์ง€ ์•Š์œผ๋ฉด ๋Œ€๋ถ€๋ถ„ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜์ง€ ์•Š๋Š”๋ฐ ์˜๋„์ ์ด๋“  ๋น„์˜๋„์ ์ด๋“  ๊ฐ„์— ์ž๋ฃŒํ˜•์€ ์ผ์น˜์‹œํ‚ค๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ์ž๋ฃŒํ˜•์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ์ถœ๋ ฅ๋˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์†Œ์‹ค๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ธ๋ฐ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ ๋ฌธ์ž 'a'๋ฅผ ์ •์ˆ˜๋กœ ์ถœ๋ ฅ์‹œํ‚จ๋‹ค๋ฉด ASCII ๊ฐ’์ด ๋‚˜์˜ค๊ฑฐ๋‚˜ ์†Œ์ˆ˜(36.5)๋ฅผ ์ •์ˆ˜๋กœ ์ถœ๋ ฅ์‹œํ‚จ๋‹ค๋ฉด 36์œผ๋กœ ์†Œ์ˆ˜๋ถ€๊ฐ€ ์ž˜๋ฆฌ๋Š” ๋“ฑ์˜ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.1

 

๋˜ํ•œ ์ด๋Ÿฐ ํ˜•์‹ ์ง€์ •์ž๋“ค์€ ๋‹จ์ˆœํžˆ ํผ์„ผํŠธ ๊ธฐํ˜ธ์™€ ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.

์ด๋Š” ๋ช‡๊ฐ€์ง€ ์„œ์‹์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋Š”๋ฐ ๊ทธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

flags  width  precision  prefix   type

 

  • flags : ๋ถ€ํ˜ธ, ๊ณต๋ฐฑ, ์†Œ์ˆ˜์ , 8์ง„ ๋ฐ 16์ง„ ์ ‘๋‘๋ถ€(0, 0x)์˜ ์ถœ๋ ฅ๊ณผ ์ •๋ ฌ ์„œ์‹ ๋“ฑ์„ ๊ฒฐ์ •ํ•œ๋‹ค. '-'๋Š” ์™ผ์ชฝ ์ •๋ ฌ, '+'๋Š” ๋ถ€ํ˜ธ ์ถœ๋ ฅ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ '0'์˜ ๊ฒฝ์šฐ ๋นˆ ์ž๋ฆฟ์ˆ˜๋ฅผ ๋นˆ์นธ์ด ์•„๋‹Œ 0์œผ๋กœ ์ถœ๋ ฅํ•˜๋Š” ๋“ฑ์˜ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ด๊ณณ ์ฐธ๊ณ 
  • width : ์ถœ๋ ฅ๋  ๋ฌธ์ž์˜ ์ตœ์†Œ ๊ฐฏ์ˆ˜๋ฅผ ์ง€์ •ํ•œ๋‹ค. ์ด๊ณณ ์ฐธ๊ณ 
  • precision : ๋ฌธ์ž์—ด, ์œ ํšจ ์ž๋ฆฟ์ˆ˜ ๋˜๋Š” ๋ถ€๋™ ์†Œ์ˆ˜์  ๊ฐ’์˜ ์†Œ์ˆ˜์  ๋’ท์ž๋ฆฌ์ˆ˜๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ์ตœ๋Œ€ ์ž๋ฆฟ์ˆ˜ ๋˜๋Š” ์ •์ˆ˜ ๊ฐ’์ด ์ถœ๋ ฅ๋˜๋Š” ์ตœ์†Œ ์ž๋ฆฟ์ˆ˜๋ฅผ ์ง€์ •ํ•˜๋Š” ์„ ํƒ์  10์ง„์ˆ˜ ์ˆซ์ž๋‹ค. 
  • prefix : ์ธ์ˆ˜์˜ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•œ๋‹ค. ๋ถ€๋™์†Œ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” float์ด '%f'์ธ๊ฒƒ์— ๋น„ํ•ด double์€ '%lf'์ธ ๊ฒƒ์„ ์˜ˆ๋กœ ๋“ค ์ˆ˜ ์žˆ๋‹ค.
  • type : ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ์ž๋ฃŒํ˜•์— ๋”ฐ๋ฅธ ๋ฌธ์ž๊ฐ€ ์œ„์น˜ํ•œ๋‹ค. ์ •์ˆ˜๋ฉด 'd', ๋ฌธ์ž๋ฉด 'c' ๊ฐ™์€ ์‹์ด๋‹ค.
๊ฐ ๋ถ€๋ถ„์˜ ์ด๋ฆ„๊ณผ ๊ธฐ๋Šฅ์€ ์œ„์™€ ๊ฐ™์œผ๋ฉฐ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜์˜ ์ถœ์ฒ˜๋‚˜ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ์ฐธ๊ณ ํ•˜์ž.
์ด ์ค‘์—์„œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€๋ฅผ ์ถ”๋ ค๋ณด์ž๋ฉด flags์˜ '-', '0' ์ด ์„œ์‹ ์ถœ๋ ฅ์— ์œ ์šฉํ•  ๊ฒƒ์ด๋‹ค.
 
#include 

int main()
{
    int num1 = 100;
    int num2 = 200;

    printf("%05d \n", num1);
    printf("%5d \n", num2);
    printf("%-05d \n", num2);

    return 0;
}
 
์œ„์˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค.
 

 

๋จผ์ € num1์˜ ๊ฒฝ์šฐ "%05d" ํ˜•์‹ ์ถœ๋ ฅ์„ ํ†ตํ•ด 5๊ธ€์ž ๊ณต๊ฐ„์—์„œ ๋นˆ ๊ณต๊ฐ„์€ 0์œผ๋กœ ์ฑ„์šฐ๋„๋ก ์ถœ๋ ฅ์‹œ์ผฐ๋‹ค.(flags: 0, width: 5)
๊ทธ ๋‹ค์Œ num2๋Š” "5d"๋ฅผ ํ†ตํ•ด ์˜ค๋ฅธ์ชฝ ์ •๋ ฌ์„, ๊ทธ ๋‹ค์Œ์—๋Š” "-5d"๋ฅผ ํ†ตํ•ด ์ผ๋ฐ˜ ์ถœ๋ ฅ๊ณผ ์™ผ์ชฝ ์ •๋ ฌ ์ถœ๋ ฅ์„ ๊ตฌ๋ถ„ํ•˜์˜€๋‹ค.
 
์ด๋Š” ์ดˆ๋ณด์ ์ธ ๋‹จ๊ณ„์—์„œ ์ž์ฃผ ์“ฐ์ผ ์˜ˆ์‹œ๋ฅผ ๋“ค์€ ๊ฒƒ ๋ฟ์ด๊ณ  ์—ฌ๋Ÿฌ ํ”Œ๋ž˜๊ทธ์˜ ์กฐํ•ฉ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์–‘ํ•˜๊ฒŒ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค.
์ถ”๊ฐ€์ ์ธ ์ •๋ณด๋Š” ๋ ˆํผ๋Ÿฐ์Šค์™€ MSDN์„ ์ฐธ๊ณ ํ•˜๋„๋ก ํ•˜์ž. ํŠนํžˆ ์•„๋ž˜ ์ถœ์ฒ˜์˜ ์ฒซ๋ฒˆ์งธ ๋งํฌ์ธ IBM Knowledge Center์—๋Š” ์˜ˆ์ œ๊ฐ€ ์ œ๊ณต๋˜๋ฏ€๋กœ ๊ด€์‹ฌ์ด ์žˆ๋‹ค๋ฉด ๋“ค์–ด๊ฐ€ ๋ณด๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค.
 

 

์ถœ์ฒ˜:

https://www.ibm.com/support/knowledgecenter/ko/ssw_ibm_i_73/rtref/printf.htm

https://ko.wikipedia.org/wiki/%ED%91%9C%EC%A4%80_%EC%8A%A4%ED%8A%B8%EB%A6%BC

http://www.cplusplus.com/reference/cstdio/printf/#compatibility

2. fprintf()

int fprintf(FILE *stream, const char *format-string, argument-list);

 

fprintf()๋Š” printf()์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ์•ž์— f๋ผ๋Š” ๊ธ€์ž๊ฐ€ ๋ถ™์–ด ์žˆ๋Š”๋ฐ ์ด๋Š” file์„ ๋œปํ•œ๋‹ค๊ณ  ๋ด๋„ ๋ฌด๋ฐฉํ•˜๋‹ค.

์ฆ‰ ํŒŒ์ผ ์ŠคํŠธ๋ฆผ์— ์„œ์‹ํ™”๋œ ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜๋‹ค.

 

๊ทธ๋Ÿฐ๋ฐ ์ฒซ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ณด๋ฉด FILE *stream ์ด๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ด๋Š” ํ˜•์‹ ๋ฌธ์ž์—ด์ด ์ถœ๋ ฅ๋  ํŒŒ์ผ ํฌ์ธํ„ฐ๋ฅผ ์˜๋ฏธํ•˜์ง€๋งŒ ์ถ”๊ฐ€๋กœ ์œ„์—์„œ stdout๊ณผ ๊ด€๋ จํ•ด์„œ ์–ธ๊ธ‰ํ•œ ํ‘œ์ค€ ์ŠคํŠธ๋ฆผ์„ ์ „๋‹ฌํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์ฆ‰ fprintf(stdout, "Hello World!")๋Š” printf("Hello World")์™€ ๋™์ผํ•œ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.2

 

๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ํŒŒ์ผ์— ์„œ์‹ํ™”๋œ ๋ฌธ์ž์—ด ์ถœ๋ ฅ์„ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค. ๋ฌธ์ž์—ด ํ˜•์‹์™€ ๊ทธ์— ๋งž๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์€ ๊ธฐ์กด์˜ printf()์˜ ์‚ฌ์šฉ ๋ฐฉ์‹๊ณผ ๋™์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์— ํฐ ์–ด๋ ค์›€์€ ์—†๋‹ค. ์ด๋Š” ๋น„์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜์˜€์„ ๊ฒฝ์šฐ ์ •์ƒ์ ์ผ ๋•Œ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ถœ๋ ฅ๋œ ๋ฐ”์ดํŠธ์˜ ๊ฐœ์ˆ˜๊ฐ€ ์•„๋‹Œ ์Œ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฏ€๋กœ ์ด๋ฅผ ์กฐ๊ฑด๋ฌธ์œผ๋กœ ๊ฒ€์‚ฌํ•˜์—ฌ ํŒŒ์ผ์— ์ œ๋Œ€๋กœ ์ถœ๋ ฅ์ด ๋˜์—ˆ๋Š”์ง€ ๊ฒ€์ฆํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์€ ๋ฐฉ๋ฒ•์ผ ๊ฒƒ์ด๋‹ค.

 

ํ•˜์ง€๋งŒ ์ผ๋ฐ˜์ ์ธ ์ถœ๋ ฅ์œผ๋กœ stdout์— ์ถœ๋ ฅํ•˜๋Š” ๊ฒŒ ์•„๋‹Œ ์ด์ƒ, ํŒŒ์ผ ํฌ์ธํ„ฐ๊ฐ€ ์ œ๋Œ€๋กœ ์—ด๋ ธ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•  ๊ฒƒ์ด๋‹ค.

ํ•จ์ˆ˜ ์›ํ˜•์— ๋งž๊ฒŒ ์ œ๋Œ€๋กœ ์‚ฌ์šฉํ•˜์˜€์„ ๊ฒฝ์šฐ์—๋„ ํŒŒ์ผ์— ์ œ๋Œ€๋กœ ์ถœ๋ ฅ์ด ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ํŒŒ์ผ ํฌ์ธํ„ฐ๊ฐ€ ์ ์ ˆํ•œ ๋ชจ๋“œ๋กœ ์—ด๋ฆฌ๊ณ  ๋‹ซํ˜”๋Š”์ง€, ๋ฌธ์ž์—ด ์„œ์‹์˜ ํ”Œ๋ž˜๊ทธ๋Š” ๋ชฉ์ ์— ๋งž๊ฒŒ ์‚ฌ์šฉ๋˜์—ˆ๋Š”์ง€๋ฅผ ๋จผ์ € ํ™•์ธํ•˜๋„๋ก ํ•˜์ž.

 

#include 

int main()
{
    int num1;
    char name[20];
    FILE *fp;
    
    fp = fopen("test.txt", "w");
    
    printf("TYPE NAME : ");
    scanf("%s", name);
    
    printf("TYPE AGE : ");
    scanf("%d", &num1);
    
    fprintf(fp, "Hello World. My name is %s and I\'m %d years old.", name, num1);
    
    fclose(fp);
    return 0;
}

 

์œ„์˜ ์˜ˆ์ œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ์ž…๋ ฅ ๊ณผ์ •์„ ๊ฑฐ์น˜๊ฒŒ ๋œ๋‹ค.

 

 

์ด๋กœ ์ธํ•ด ์ถœ๋ ฅ๋˜๋Š” ํŒŒ์ผ์˜ ๋‚ด์šฉ์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

 

 

    fprintf(fp, "Hello World. My name is %s and I\'m %d years old.", name, num1);

์ด ๊ตฌ๋ฌธ์—์„œ ํ…์ŠคํŠธ ํŒŒ์ผ์— ๋ฌธ์ž์—ด์„ ์ž…๋ ฅํ•˜์˜€๋‹ค๋Š” ๊ฒƒ์„ ๋ช…์‹ฌํ•˜์ž.

 

 

์ถœ์ฒ˜:

https://modoocode.com/64

https://www.ibm.com/support/knowledgecenter/ko/ssw_ibm_i_73/rtref/fprintf.htm

https://kr.mathworks.com/help/matlab/ref/fprintf.html

 

 

 

3. sprintf()

 

int sprintf(char *buffer, const char *format-string, argument-list);

 

์ด ์—ญ์‹œ printf()์™€ ๋™์ผํ•œ ๋ฌธ์ž์—ด ์„œ์‹ ๋ฐ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๋ฐ˜ํ™˜๊ฐ’๋„ ์ถœ๋ ฅํ•œ ๋ฐ”์ดํŠธ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋“ฑ ๋น„์Šทํ•˜์ง€๋งŒ ์ด๋ฒˆ์—๋Š” ์ฒซ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ FILE* ํ˜• ๋ณ€์ˆ˜์˜€๋˜ fprintf()์™€๋Š” ๋‹ฌ๋ฆฌ char* ํ˜• ๋ณ€์ˆ˜๋ผ๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์„ ๋ณด๋ฉด ๊ฐ์ด ์˜ค๊ฒ ์ง€๋งŒ ๋ฐฐ์—ด๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฒ„ํผ์— ์ผ๋ จ์˜ ์„œ์‹ ๋ฌธ์ž์—ด์„ ์ž…๋ ฅํ•˜๋Š” ํ•จ์ˆ˜๋‹ค. ์ฆ‰ ํŒŒ์ผ์ด๋‚˜ ํ™”๋ฉด์— ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ณ€์ˆ˜(๋ฒ„ํผ)์— ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

์ค‘์š”ํ•œ ๊ฒƒ์€ ์—ฌ๊ธฐ์„œ ๋ฒ„ํผ๋Š” ๋ฐฐ์—ด๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์ต์ˆ™ํ•œ ์‚ฌ๋žŒ๋“ค์€ ์ž˜ ์•Œ๊ฒ ์ง€๋งŒ String์ด๋ผ๋Š” ๋ฌธ์ž์—ด ์ž๋ฃŒํ˜•์ด ๋”ฐ๋กœ ์žˆ๋Š” C++๊ณผ๋Š” ๋‹ฌ๋ฆฌ C์–ธ์–ด์—์„œ๋Š” char ์ž๋ฃŒํ˜•์„ ํ†ตํ•˜์—ฌ ๋ชจ๋“  ๋ฌธ์ž์—ด์˜ ์ฒ˜๋ฆฌ๊ฐ€ ์ด๋ฃจ์–ด์ง„๋‹ค. char* ํ˜•์„ ์ด์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด ์ƒ์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ฑฐ๋‚˜ char[] ํ˜•์„ ์ด์šฉํ•˜์—ฌ ์ˆ˜์ • ๊ฐ€๋Šฅํ•œ ๋ฌธ์ž์—ด์„ ๋‹ค๋ฃจ๋ฉฐ ๋Œ€๋ถ€๋ถ„ <string.h> ํ—ค๋”๋ฅผ ํ†ตํ•ด ๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์ด๋•Œ ๋ฌธ์ž์—ด ์ƒ์ˆ˜๋Š” ํ•œ๋ฒˆ ์„ ์–ธ๋˜๋ฉด ์ƒˆ๋กœ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ ๋ง๊ณ ๋Š” ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋ฐฐ์—ด๋กœ ์„ ์–ธ๋œ char ์ž๋ฃŒํ˜• ์Šคํƒ€์ผ์˜ ๋ฌธ์ž์—ด์„ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์ด ๋ฌธ์ž์—ด์— ์„œ์‹ํ™”๋œ ๋ฌธ์ž์—ด์„ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜๋ผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

<string.h>์—์„œ๋„ strcpy๋“ฑ์„ ํ†ตํ•ด ๋ฐฐ์—ด์— ๋ฌธ์ž์—ด์„ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์„œ์‹ํ™”๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋Š” ํŠน์ง•์ด ์žˆ์—ˆ๋Š”๋ฐ ์ด sprintf()๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด printf()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ™”๋ฉด์— ์ถœ๋ ฅํ•˜๋“ฏ์ด ๋ฐฐ์—ด์— ์„œ์‹ํ™”๋œ ๋ฌธ์ž์—ด์„ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

#include 

int main()
{
    int num1;
    char name[20];
    char string[200];
    
    printf("TYPE NAME : ");
    scanf("%s", name);
    
    printf("TYPE AGE : ");
    scanf("%d", &num1);
    
    sprintf(string, "Hello World. My name is %s and I\'m %d years old.", name, num1);
    printf("%s", string);

    return 0;
}

 

์œ„์™€ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ ๋™์ž‘ํ•œ๋‹ค.

 

 

์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด string ๋ฌธ์ž์—ด ๋ฐฐ์—ด์— ์„œ์‹ํ™”๋œ ๋ฌธ์ž์—ด์„ ํ• ๋‹นํ•˜์˜€๊ธฐ์— ์œ„์ฒ˜๋Ÿผ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•˜์ž.

    sprintf(string, "Hello World. My name is %s and I\'m %d years old.", name, num1);

 

์ถœ์ฒ˜:

https://www.ibm.com/support/knowledgecenter/ko/ssw_ibm_i_73/rtref/sprintf.htm

 

  1. ์ž๋ฐ”(Java)์—์„œ๋Š” ์ด๋ฅผ ์•„์˜ˆ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Œ์œผ๋กœ์จ ๊ฐ•๊ฑด์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐฉํ–ฅ์„ ์ฑ„ํƒํ•˜๊ณ  ์žˆ๋‹ค. [๋ณธ๋ฌธ์œผ๋กœ]
  2. stdout ๋ฟ ์•„๋‹ˆ๋ผ stderr์— ์ถœ๋ ฅํ•˜์—ฌ ๋””๋ฒ„๊น…์„ ์œ„ํ•œ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๊ธฐ๋ฒ•๋„ ์žˆ๋‹ค. ์ด๋Š” ๊ธฐ์กด์˜ stdout์€ ์ž…๋ ฅ ๋ฒ„ํผ๋ฅผ ํ†ตํ•˜์—ฌ ์ถœ๋ ฅ๋˜๊ธฐ์— ํ”„๋กœ๊ทธ๋žจ ์˜ค๋ฅ˜ ์‹œ ์ถœ๋ ฅ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๊ณผ ๋‹ฌ๋ฆฌ stderr์€ ๋ฐ”๋กœ ์ถœ๋ ฅ๋˜๊ธฐ์— ํ™•์ธ์ด ์šฉ์ดํ•˜๋‹ค๋Š” ์ ์ด ์žˆ๋‹ค. [๋ณธ๋ฌธ์œผ๋กœ]
๋ฐ˜์‘ํ˜•

+ Recent posts