% | [플래그] | [최소 폭] | [.정밀도] | [길이] | 변환 지정자 |
---|---|---|---|---|---|
출력할 최소 글자 수 | 출력할 값의 타입 | 사용할 서식 | |||
'-': 왼쪽 정렬 '+': 부호 항상 출력 ' ': 부호 자리에 공백 항상 출력 '#': C 코드와 호환되는 서식 '0': 공백 대신 0으로 출력 |
(정수) *: 추가 인자로 입력 |
. = 0 .(정수) .*: 추가 인자로 입력 |
% | [*] | [최대 폭] | [길이] | 변환 지정자 |
---|---|---|---|---|
읽은 값을 버림 | 읽을 최대 글자 수 | 읽을 값의 타입 | 인식할 서식 | |
(정수) |
길이 | 변환 지정자 | 공백 | 길이 | ||||||||||||||||||
L | t | z | j | ll | l | h | hh | hh | h | l | ll | j | z | t | L | ||||||
% 문자 | % | % 문자 | ○ | ||||||||||||||||||
wi | i | 문자 | c |
[폭을 생략했을 경우] 문자 [폭을 입력했을 경우] 문자의 배열 널 문자를 쓰지 않음 |
c* | wc* | |||||||||||||||
wc* | c* |
문자열 출력하는 최대 문자 수 = 정밀도 |
s |
문자열 공백 문자에서 멈춤 |
○ | ||||||||||||||||
(없음) | [...] |
특정 문자로 이루어진 문자열 폭 = 입력받는 최대 문자 수 집합에 없는 문자에서 멈춤 컴파일러에 따라 a-z 문법 사용 가능 |
|||||||||||||||||||
(없음) | [^...] |
특정 문자를 제외한 문자로 이루어진 문자열 폭 = 입력받는 최대 문자 수 집합에 있는 문자에서 멈춤 컴파일러에 따라 a-z 문법 사용 가능 |
|||||||||||||||||||
pd | sz | im | ll | l | i | s | c |
부호 있는 10진 정수 출력하는 최소 자릿수 (기본 1) = 정밀도 |
d |
부호 있는 10진 정수 [+-]?[0-9]+ |
○ | c* | s* | i* | l* | ll* | im* | sz* | pd* | ||
i |
[0으로 시작할 경우] 부호 있는 8진 정수 %o와 같은 규칙 [0x로 시작할 경우] 부호 있는 16진 정수 %x와 같은 규칙 [나머지 경우] 부호 있는 10진 정수 %d와 같은 규칙 |
○ | |||||||||||||||||||
부호 없는 10진 정수 출력하는 최소 자릿수 (기본 1) = 정밀도 |
u |
부호 없는 10진 정수 [+-]?[0-9]+ |
○ | ||||||||||||||||||
부호 없는 8진 정수 출력하는 최소 자릿수 (기본 1) = 정밀도 |
o |
부호 없는 8진 정수 [+-]?[0-7]+ |
○ | ||||||||||||||||||
부호 없는 16진 정수 출력하는 최소 자릿수 (기본 1) = 정밀도 |
x/X |
부호 없는 16진 정수 [+-]?(0x)?[0-9a-f]+ |
○ | ||||||||||||||||||
ld | d | d |
부동소숫점 소숫점 아래 자릿수 (기본 6) = 정밀도 무한대는 inf 혹은 infinity로 변환 |
f/F |
[0x로 시작할 경우] 부동소숫점 (16진 지수) [+-]?0x{significand}(p[+-]?[0-9]+)? {significand}는 [0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+ [나머지 경우] 부동소숫점 (10진) [+-]?{significand}(e[+-]?[0-9]+)? {significand}는 [0-9]+(\.[0-9]*)?|\.[0-9]+ [이외 특수한 값] 무한대: [+-]?inf(inity)? NaN: [+-]?nan |
○ | f* | d* | ld* | ||||||||||||
부동소숫점 (10진 지수 표기) 소숫점 아래 자릿수 (기본 6) = 정밀도 무한대는 inf 혹은 infinity로 변환 지수 자리는 최소 2자리 0은 지수 자리가 +00으로 출력 |
e/E | ○ | |||||||||||||||||||
부동소숫점 (16진 지수 표기) 소숫점 아래 자릿수 (기본값은 자동) = 정밀도 normalized value 범위일 경우 첫 자리가 0이 아님 0은 지수 자리가 +0으로 출력 |
a/A | ○ | |||||||||||||||||||
부동소숫점 (10진 알아서 표기) 0이거나 절댓값이 0.0001 이상 10^(정밀도) 미만일 경우 %f와 같은 규칙 그렇지 않을 경우 %e와 같은 규칙 최대 유효 숫자의 개수 (기본 6, 최소 1) = 정밀도 맨 뒤의 의미 없는 0을 출력하지 않음 |
g/G | ○ | |||||||||||||||||||
v* |
포인터 컴파일러마다 서식이 다름 |
p |
포인터 printf의 %p와 호환되는 서식 |
○ | v** | ||||||||||||||||
pd* | sz* | im* | ll* | l* | i* | s* | c* |
이번 호출에서 출력한 문자 수 인자 포인터가 가리키는 주소에 값을 씀 |
n |
이번 호출에서 읽은 문자 수 인자 포인터가 가리키는 주소에 값을 씀 |
c* | s* | i* | l* | ll* | im* | sz* | pd* |
c = char,
wc = wchar_t,
s = short,
i = int,
wi = wint_t,
l = long,
ll = long long,
im = intmax_t,
sz = size_t,
pd = ptrdiff_t,
f = float,
d = double,
ld = long double,
v = void
모든 문자: 그대로 출력
공백: 0개 이상의 공백 문자를 읽은 뒤 버리기
이외 모든 문자: 정확히 일치
성공: 출력한 문자 수 (sn의 경우 버퍼 크기를 무시하고)
출력/인코딩/_s 오류: 음수
성공/매치 실패: 대입에 성공한 서식 지정자 개수 (%n과 *을 무시하고)
입력/_s 오류: EOF
· | · | · | printf | · |
---|---|---|---|---|
가변인자로 전달 | 표준 출력으로 | 일반 문자열 | ||
v | f | w | _s | |
va_list로 전달 | 파일로 | 와이드 문자열 | 범위 확인 등 | |
s | ||||
문자열로 | ||||
sn | ||||
문자열로, 버퍼 크기만큼만 |
· | · | · | scanf | · |
---|---|---|---|---|
가변인자로 전달 | 표준 입력에서 | 일반 문자열 | ||
v | f | w | _s | |
va_list로 전달 | 파일에서 | 와이드 문자열 | 범위 확인 등 | |
s | ||||
문자열에서 |
snwprintf, vsnwprintf는 지원하지 않음