로그인하고 있지 않습니다. 편집하면 당신의 IP 주소가 공개적으로 기록됩니다. 계정을 만들고 로그인하면 편집 시 사용자 이름만 보이며, 위키 이용에 여러 가지 편의가 주어집니다.스팸 방지 검사입니다. 이것을 입력하지 마세요!====서식 문자==== {| class="wikitable" style="text-align: center;" |- ! 포맷 스트링 ! 의미 / 출력 방식 |- | %c || 문자 |- | %d || 부호있는 10진수 |- | %u || 부호없는 10진수 |- | %o || 부호있는 8진수 |- | %x, %X || 부호없는 16진수 (x는 소문자, X는 대문자) |- | %s || 문자열 |- | %p || 포인터 주소 |- | %% || % |- |} {| class="collapsible collapsed" |- ! 전체 설명 보기 |- | printf 함수는 사실 포맷 스트링을 받는 부분까지만 인자가 정해져 있고, 그 이후는 ...을 통해 가변 길이 인자로 받게 된다. 이 과정에서 형식은 무시되고 void * 형태로 넘어가기 때문에, 포맷 스트링을 사용해 표시할 형식을 지정해주면 그 표시할 형식에 맞춰서 자료의 길이를 추정하고 그만큼을 읽어내는 것이다. 때문에 포맷 스트링과 맞지 않는 자료 형식을 사용할 경우 오작동을 일으킬 가능성이 있다. printf의 포맷 스트링 형식은 사실 다음과 같다: %[플래그][표시길이][.정확도][데이터길이]종류 ; 플래그 (Flags) : 플래그는 부호 관련 옵션이다. 여러 개를 붙이는 것도 가능하다. {| class="wikitable" |- ! 문자 ! 의미 |- | -<br />(빼기) || 숫자의 경우에도 왼쪽 정렬을 하도록 한다. 이 기호가 없는 경우 기본값은 뒤의 표시 길이보다 짧아 여유가 생기는 경우 오른쪽 정렬이다. |- | +<br />(더하기) || 양수일 경우에 +를 붙인다. 이 기호가 없는 경우 기본값은 양수의 경우 기호는 공간 없이 생략된다. |- | <br />(공백) || 양수일 경우에 기호가 들어갈 공간만큼 공백을 붙인다. 이 기호가 없는 경우 기본값은 양수의 경우 기호는 공간 없이 생략된다. |- | 0<br />(숫자 0) || 표시 길이보다 숫자 자리수가 짧아 빈 공간이 남는 경우 남는 공간을 전부 0으로 채운다. 이 기호가 없는 경우 기본값은 남는 공간을 공백으로 채우게 된다. |- | #<br />(해시 기호) || 주어진 포맷 스트링의 다른 형태를 사용한다. g, G의 경우 따라 붙는 0이 생략되지 않는다. f, F, e, E, g, G에 대해서는 항상 10진수 소숫점이 붙게 된다. o, x, X에 대해서는 각각 0이 아닌 숫자가 추가된다. |- |} ; 표시길이 (Width) : 숫자 값이 들어간다. 해당 포맷 스트링의 값이 표시될 최소한의 길이를 지정한다. 보통은 넉넉하게 길이를 잡고 여유 공간을 둬서 탭처럼 보이게 하기 위해 쓴다. 위의 플래그로 여유가 생겼을 때 여유 공간의 표시 방법을 조정할 수 있다. ; 정확도 (Precision) : 점으로 시작하며, 숫자 값이 들어간다. 해당 포맷 스트링의 값이 표시될 최대한의 길이를 지정하는데 쓰인다. 말은 이렇긴 한데, 보통 부동소수점 형의 경우 자릿수를 지정하는데 쓰이며, 문자열 형의 경우 이 길이까지만 표시하라는 지정자가 된다. : 위에 쓰인 표시길이와 정확도는 각 포맷 스트링의 값이 표시될 최소/최대치를 지정하는 것인데, 이를 포맷 스트링에서 직접 입력하지 않고, 인자로 받아 쓰는 방법도 존재한다. *를 쓰면 인자에서 값을 읽어 그 길이를 사용하게 된다. <syntaxhighlight lang="c"> printf("%*d", 5, 123); // " 123"을 출력한다. printf("%.*s", 5, "abcdefg"); // "abcde"를 출력한다. </syntaxhighlight> ; 데이터길이 (Length) : 인자의 길이를 추정하도록 도와주는 옵션이다. 보통 캐스팅을 하고 쓰지 않으면 읽을 바이트 수를 오인해서 결과를 잘못 표시할 수 있는데, 이 포맷 스트링을 쓰는 경우 길이를 강제하기 때문에 사실상 printf 내에서 캐스팅과 같은 효과를 낸다. {| class="wikitable" |- ! 문자 ! 의미 |- | hh || 정수형 포맷에서 char에서 int로 확장된 정수형 인자를 받도록 한다. |- | h || 정수형 포맷에서 short에서 int로 확장된 정수형 인자를 받도록 한다. |- | l || 정수형 포맷에서는 long 크기의 정수형 인자를 받도록 한다.<br />부동소수점형 포맷에서는 double 크기의 부동소수점형 인자를 받도록 한다. |- | ll || 정수형 포맷에서 long long 크기의 정수형 인자를 받도록 한다. |- | L || 부동소수점형 포맷에서 long double 크기의 부동소수점형 인자를 받도록 한다. |- | z || 정수형 포맷에서 size_t 크기의 정수형 인자를 받도록 한다. |- | j || 정수형 포맷에서 intmax_t 크기의 정수형 인자를 받도록 한다. |- | t || 정수형 포맷에서 ptrdiff_t 크기의 정수형 인자를 받도록 한다. |- ! colspan="2" | ''C99 이전에 추가된 확장 옵션 (주로 Win32/Win64에서 지원하던 방법)'' |- | ''I'' || 부호 있는 정수 포맷에서 ptrdiff_t 크기의 정수형 인자를 받도록 한다. 부호 없는 정수 포맷에서는 size_t 크기의 정수형 인자를 받도록 한다. |- | ''I32'' || 정수형 포맷에서 형식 인자와 상관 없이 32 비트 크기의 정수형 인자를 받도록 한다. |- | ''I64'' || 정수형 포맷에서 형식 인자와 상관 없이 64 비트 크기의 정수형 인자를 받도록 한다. |- ! colspan="2" | ''C99 이전에 추가된 확장 옵션 (주로 BSD에서 지원하던 방법)'' |- | ''q'' || 정수형 포맷에서 형식 인자와 상관 없이 64 비트 크기의 정수형 인자를 받도록 한다. |- ! colspan="2" | ''C99 이후 확장 옵션'' |- | colspan="2" | 이 옵션들은 기존 플랫폼에서는 형식 인자만으로는 길이를 동일하게 읽을 수 있는 방법이 없었다. 32비트에서 long이 32비트, 64에서 long이 64비트이므로 l의 길이가 달라졌으나, 이 형식들은 그 제약을 무시하도록 한다. C99 제정 이전에 Win32/Win64에서 사용되던 I32, I64 옵션과 비슷한 옵션들이다. 기본적인 사용법은 '''PRI_32''', '''PRI_64'''로 _ 부분에는 d, i, u, x를 넣을 수 있으며 각각 포맷 스트링의 종류 항과 연동된다. |- |} ; 종류 (Type) : 필수 항이다. 가장 핵심이 되는 부분이며, 인자를 무슨 형태로 처리할지 결정해주는 부분이다. {| class="wikitable" |- ! 문자 ! 의미 |- | d, i || '''int''' 형대로 부호 있는 10진수 정수형으로 출력한다. 출력에서는 %d와 %i가 동일하게 사용되나, 입력(scanf)에서는 %d는 10진수만의 입력을 받으나, %i는 첨두자에 따라 0x 첨자로 16진수를, 0 첨자로 8진수를 인식하도록 한다. |- | u || '''unsigned''' 형대로 부호 없는 10진수 정수형으로 출력한다. |- | o || '''unsigned''' 형대로 부호 없는 8진수 정수형으로 출력한다. |- | x, X || '''unsigned''' 형대로 부호 없는 16진수 정수형으로 출력한다. x와 X의 차이는 A부터 F까지의 값에 대해 소문자를 사용할지, 대문자를 사용할지를 결정하는 것 뿐이다. |- | a, A || '''unsigned''' 형대로 부호 없는 16진수 정수형으로 앞에 0x를 붙여서 출력한다. a와 A의 차이는 첨두 기호 0X와 A부터 F까지의 값에 대해 소문자를 사용할지, 대문자를 사용할지를 결정하는 것 뿐이다. |- | f, F || '''double''' 형대로 부동소수점 형식으로 출력한다. f와 F의 차이는 오류 값(NaN)이나 무한대(Infinity)의 경우에 소문자를 사용할지, 대문자를 사용할지를 결정하는 것 뿐이다. |- | e, E || '''double''' 형을 받아서 출력하되, 이를 지수 표현식(가수×기수<sup>지수</sup>, 여기서는 가수×10<sup>지수</sup>을 [-]d.ddd e±ddd로 출력)으로 출력하도록 한다. e와 E의 차이는 중간에 지수부를 시작되는 기호인 e를 대문자로 쓸지만 결정해준다. 지수부는 항상 최소 2자리 수 이상이 출력된다. |- | g, G || 크기에 따라서 정확도가 높은 쪽으로 e, f 또는 E, F를 사용하도록 결정한다. |- | c || '''char''' 형대로 문자 하나를 출력한다. ASCII 코드로 대응된다. |- | s || NULL로 끝나는 문자열을 출력한다. 무조건 다음 NULL까지 읽기 때문에 반드시 출력하려는 문자열에는 NULL이 있어야한다. |- | p || '''void *''' 형을 받아 메모리 공간의 포인터 주소를 출력한다. |- | n || 아무것도 출력하지 않는다. '''int''' 형만큼 포인터를 이동시킨다. |- | % || % 기호를 출력한다. |- |} |- |} 요약: 리브레 위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-동일조건변경허락 3.0 라이선스로 배포됩니다(자세한 내용에 대해서는 리브레 위키:저작권 문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요. 글이 직접 작성되었거나 호환되는 라이선스인지 확인해주세요. 리그베다 위키, 나무위키, 오리위키, 구스위키, 디시위키 및 CCL 미적용 사이트 등에서 글을 가져오실 때는 본인이 문서의 유일한 기여자여야 하고, 만약 본인이 문서의 유일한 기여자라는 증거가 없다면 그 문서는 불시에 삭제될 수 있습니다. 취소 편집 도움말 (새 창에서 열림) | () [] [[]] {{}} {{{}}} · <!-- --> · [[분류:]] · [[파일:]] · [[미디어:]] · #넘겨주기 [[]] · {{ㅊ|}} · <onlyinclude></onlyinclude> · <includeonly></includeonly> · <noinclude></noinclude> · <br /> · <ref></ref> · {{각주}} · {|class="wikitable" · |- · rowspan=""| · colspan=""| · |} {{lang|}} · {{llang||}} · {{인용문|}} · {{인용문2|}} · {{유튜브|}} · {{다음팟|}} · {{니코|}} · {{토막글}} {{삭제|}} · {{특정판삭제|}}(이유를 적지 않을 경우 기각될 가능성이 높습니다. 반드시 이유를 적어주세요.) {{#expr:}} · {{#if:}} · {{#ifeq:}} · {{#iferror:}} · {{#ifexist:}} · {{#switch:}} · {{#time:}} · {{#timel:}} · {{#titleparts:}} __NOTOC__ · __FORCETOC__ · __TOC__ · {{PAGENAME}} · {{SITENAME}} · {{localurl:}} · {{fullurl:}} · {{ns:}} –(대시) ‘’(작은따옴표) “”(큰따옴표) ·(가운뎃점) …(말줄임표) ‽(물음느낌표) 〈〉(홑화살괄호) 《》(겹화살괄호) ± − × ÷ ≈ ≠ ∓ ≤ ≥ ∞ ¬ ¹ ² ³ ⁿ ¼ ½ ¾ § € £ ₩ ¥ ¢ † ‡ • ← → ↔ ‰ °C µ(마이크로) Å °(도) ′(분) ″(초) Α α Β β Γ γ Δ δ Ε ε Ζ ζ Η η Θ θ Ι ι Κ κ Λ λ Μ μ(뮤) Ν ν Ξ ξ Ο ο Π π Ρ ρ Σ σ ς Τ τ Υ υ Φ φ Χ χ Ψ ψ Ω ω · Ά ά Έ έ Ή ή Ί ί Ό ό Ύ ύ Ώ ώ · Ϊ ϊ Ϋ ϋ · ΐ ΰ Æ æ Đ(D with stroke) đ Ð(eth) ð ı Ł ł Ø ø Œ œ ß Þ þ · Á á Ć ć É é Í í Ĺ ĺ Ḿ ḿ Ń ń Ó ó Ŕ ŕ Ś ś Ú ú Ý ý Ź ź · À à È è Ì ì Ǹ ǹ Ò ò Ù ù · İ Ż ż ·  â Ĉ ĉ Ê ê Ĝ ĝ Ĥ ĥ Î î Ĵ ĵ Ô ô Ŝ ŝ Û û · Ä ä Ë ë Ï ï Ö ö Ü ü Ÿ ÿ · ǘ ǜ ǚ ǖ · caron/háček: Ǎ ǎ Č č Ď ď Ě ě Ǐ ǐ Ľ ľ Ň ň Ǒ ǒ Ř ř Š š Ť ť Ǔ ǔ Ž ž · breve: Ă ă Ğ ğ Ŏ ŏ Ŭ ŭ · Ā ā Ē ē Ī ī Ō ō Ū ū · à ã Ñ ñ Õ õ · Å å Ů ů · Ą ą Ę ę · Ç ç Ş ş Ţ ţ · Ő ő Ű ű · Ș ș Ț ț 이 문서는 다음의 숨은 분류 1개에 속해 있습니다: 분류:깨진 파일 링크가 포함된 문서