์ ์ปดํ๋ผ์ด ํ์ ๋, ์ค๋ฅ
printf๋ฅผ f printf๋ก ์์ฑํ๋ฉด ์ค๋ฅ ์์ด์ง.
์ฐธ๊ณ :
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
d 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์ผ๋ก ์์๋ถ๊ฐ ์๋ฆฌ๋ ๋ฑ์ ๋ฌธ์ ๊ฐ ์๋ค.
๋ํ ์ด๋ฐ ํ์ ์ง์ ์๋ค์ ๋จ์ํ ํผ์ผํธ ๊ธฐํธ์ ๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ง ๊ฒ์ด ์๋๋ค.
์ด๋ ๋ช๊ฐ์ง ์์์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋๋ฐ ๊ทธ๋ ๋ค์๊ณผ ๊ฐ๋ค.
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")์ ๋์ผํ ๋์์ ์ํํ๋ค.
๋๋ถ๋ถ์ ๊ฒฝ์ฐ ํ์ผ์ ์์ํ๋ ๋ฌธ์์ด ์ถ๋ ฅ์ ์ํด ์ฌ์ฉ๋๋ค. ๋ฌธ์์ด ํ์์ ๊ทธ์ ๋ง๋ ๋งค๊ฐ๋ณ์๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ ๊ธฐ์กด์ 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