C Func printf - sonkoni/Koni-Wiki GitHub Wiki
๋ฒํผ๋ ํ์ผ ์คํธ๋ฆผ์ผ๋ก ์์ ์ถ๋ ฅ
// ํฐ๋ฏธ๋๋ก ์์ ์ถ๋ ฅ
int printf(const char *restrict format, ...);
// ํ์ผ๋ก ์์ ์ถ๋ ฅ
int fprintf(FILE *restrict stream, const char *restrict format, ...);
// ๋ฌธ์์ด๋ฒํผ๋ก ์์์ถ๋ ฅ
int sprintf(char *restrict buffer, const char *restrict format, ...);
int snprintf(char *restrict buffer, size_t bufsz, const char *restrict format, ...);์ฑ๊ณตํ๋ฉด ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ๋ฐํ, ์คํจํ๋ฉด ์์๋ฅผ ๋ฐํํ๋ค. Hello ๋ฅผ ์ถ๋ ฅํ๋ค๋ฉด 5๊ฐ ๋ฐํ๋๋ ์์ด๋ค.
์ฌ์ฉ: %[ํ๋๊ทธ][ํญ][.์ ๋ฐ๋][๊ธธ์ด]์์์ง์ ์ ํํ
== ์์์ง์ ์ ==
-----------------------------------------------------------------
% : `%`๋ฅผ ๊ธฐํธ๋ฅผ ์ถ๋ ฅํ๋ ค๋ฉด `%%`๋ก ์จ์ผ ํ๋ค
d, i : signed integer - ๋ถํธ ์๋ 10์ง ์ ์
u : ๋ถํธ ์๋ 10์ง ์ ์
o : ๋ถํธ ์๋ 8์ง ์ ์
x : ๋ถํธ ์๋ 16์ง ์ ์(์๋ฌธ์)
X : ๋ถํธ ์๋ 16์ง ์ ์(๋๋ฌธ์)
f : ์ค์๋ฅผ ์์์ ์ผ๋ก ํ๊ธฐ(์๋ฌธ์)
F : ์ค์๋ฅผ ์์์ ์ผ๋ก ํ๊ธฐ(๋๋ฌธ์)
e : ์ค์ ์ง์ ํ๊ธฐ๋ฒ ์ฌ์ฉ(์๋ฌธ์)
E : ์ค์ ์ง์ ํ๊ธฐ๋ฒ ์ฌ์ฉ(๋๋ฌธ์)
a : ์ค์๋ฅผ 16์ง๋ฒ์ผ๋ก ํ๊ธฐ(์๋ฌธ์)
A : ์ค์๋ฅผ 16์ง๋ฒ์ผ๋ก ํ๊ธฐ(๋๋ฌธ์)
g : ์ค์ `%f`์ `%e` ์ค์์ ์งง์ ๊ฒ์ ์ฌ์ฉ(์๋ฌธ์)
G : ์ค์ `%F`์ `%E` ์ค์์ ์งง์ ๊ฒ์ ์ฌ์ฉ(๋๋ฌธ์)
c : ๋ฌธ์(character)
s : ๋ฌธ์์ด(string)
p : ํฌ์ธํฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์
n : ๊ฐฏ์. `%n` ๋ถ๋ถ์ int ํฌ์ธํฐ๋ฅผ ๋ฃ์ผ๋ฉด ์ถ๋ ฅํ ๋ฌธ์ ๊ฐ์๋ฅผ ๋ณ์์ ๊ฝ์์ค
== ํ๋๊ทธ ==
-----------------------------------------------------------------
- : ์ผ์ชฝ ์ ๋ ฌ
+ : ์์์ผ ๋๋ + ๋ถํธ, ์์์ผ ๋๋ - ๋ถํธ ์ถ๋ ฅ
SPACE : ์์์ผ ๋๋ ๋ถํธ๋ฅผ ์ถ๋ ฅํ์ง ์๊ณ ๊ณต๋ฐฑ์ผ๋ก ํ์, ์์ ์ผ ๋๋ - ๋ถํธ ์ถ๋ ฅ
# : ์ง๋ฒ์ ๋ง๊ฒ ์ซ์ ์์ 0, 0x, 0X๋ฅผ ๋ถ์
0 : ์ถ๋ ฅํ๋ ํญ์ ๋จ๋ ๊ณต๊ฐ์ 0์ผ๋ก ์ฑ์
== ํญ ==
-----------------------------------------------------------------
์ซ์ : ์ง์ ํ ์ซ์๋งํผ ํญ์ ์ง์ ํ์ฌ ์ถ๋ ฅ, ์ค์๋ .(์ ), e+๊น์ง ํญ์ ํฌํจ๋จ
== ์ ๋ฐ๋ ==
-----------------------------------------------------------------
.์ซ์ : ์ง์ ํ ์ซ์๋งํผ ์์์ ์๋ ์๋ฆฌ ์ถ๋ ฅ
== ์์ ์ง์ ์ ๊ธธ์ด ==
d i u o x X f F e E a A g G c s p n
-----------------------------------------------------------------------------------------------
int unsigned int float, double int char * void * int *
hh char unsigned char char *
h short unsigned short short int *
l long unsigned long double wint_t wchar_t * long int *
ll long long unsigned long long long long *
j intmax_t uintmax_t intmax_t *
z size_t size_t size_t *
t ptrdiff_t ptrdiff_t ptrdiff_t *
L long double
-----------------------------------------------------------------------------------------------
int count = printf("Hello");
// Hello ๋ฅผ ์ถ๋ ฅํ๊ณ count ์๋ 5๊ฐ ๋ด๊ธด๋ค. type printf literal
-----------------------------------------
char %c %d
unsigned char %c %u
char * %s
-----------------------------------------
short %d
int %d
long %ld l, L
long long %lld ll, LL
-----------------------------------------
unsigned short %u u, U
unsigned int %u u, U
unsigned long %lu ul, UL
unsigned long long %llu ull, ULL
-----------------------------------------
float %f, %e f, F ์์์ํจ 6(FLT_DIG)
double %f, %e ์์์ํจ 15(DBL_DIG)
long double %Lf, %Le l, L ์์์ํจ 18(LDBL_DIG)
-----------------------------------------
size_t %zu
pointer %p
long long num1 = 123456789123456789LL;
float num2 = 123.123456f;
printf("num1 long long : %lld\n", num1);
printf("num2 float : %f\n", num2);
printf("num2 float : %e\n", num2);
// num1 long long : 123456789123456789
// num2 float : 123.123459
// num2 float : 1.231235e+02// 6์นธ์ ๋ง์ถฐ ์ถ๋ ฅ
printf("%6d\n", 20);
printf("%6d\n", 200000);
// โฃโฃโฃโฃ20
// 200000
// 6์นธ์ ๋ง์ถ๊ณ , ์ฌ๋ฐฑ์ 0์ผ๋ก ์ฑ์ฐ๊ธฐ
printf("%06d\n", 20);
// 000020
// ๋ถํธ ๋ฌด์กฐ๊ฑด ์ถ๋ ฅ
printf("%+d\n", 10);
printf("%+d\n", -10);
// +10
// -10
// ์์์ ๋์งธ์๋ฆฌ๊น์ง ์ถ๋ ฅ
printf("%.2f\n", 3.141592);
// 3.14
// 8์ง์๋ก ์ถ๋ ฅ
printf("%#o (%d)\n", 0721, 0721); // 8์ง์ ์
๋ ฅ๊ฐ์ด๋ผ๋ฉด ์์ 0 ๋ถ์
// 0721
// 16์ง์๋ก ์ถ๋ ฅ
printf("%#x (%d)\n", 0xf1, 0xf1); // 16์ง์ ์
๋ ฅ๊ฐ์ด๋ผ๋ฉด ์์ 0x ๋ถ์
// 0xf1#include <stdio.h>
#include <float.h>
int main(int argc, char *argv[]) {
// printf("%*d", ์๋ฆฟ์, ์ถ๋ ฅ๊ธ์);
printf("%5d\n", 123); // %5d ๋ %+5d ์ ๋์ผํจ. ์ค๋ฅธ์ชฝ ์ ๋ ฌ๋จ.
printf("%*d\n", 5, 123); // ์์์ * ๋ฅผ ์ฐ๊ณ , ์๋ฆฟ์ ์ธ์๋ฅผ ๋ฐ๋๋ค.
// 5์๋ฆฌ์ ๋ง์ถฐ ์ถ๋ ฅ๋๋ค.
// โฃโฃ123
// โฃโฃ123
printf("%.*f\n", FLT_DIG, 3.123456789123456789f);
printf("%.*f\n", DBL_DIG, 3.123456789123456789);
printf("%.*Lf\n", LDBL_DIG, 3.123456789123456789l);
// ์ค์์ ์๋ฆฟ์ ์ ๋ฐ๋์ ๋ฐ๋ผ ์ถ๋ ฅํ ์ ์๋ค.
// 3.123457
// 3.123456789123457
// 3.123456789123456789
return 0;
}ํน์ ์์์ผ๋ก ๋ฌธ์์ด์ ๋ง๋ค ์ ์๋ค.
#include <stdio.h>
int main(int argc, char *argv[]) {
char buffer[20];
sprintf(buffer, "Hello, %s", "World");
// ====== ๋ฌธ์์ด ํฌ์ธํฐ์ ์ง์ ํ๋ฉด ์์์ผ๋ก ์ ์ฅ๋๋ค.
printf("%s\n", buffer);
return 0;
}
// Hello, World