Sdílet prostřednictvím


Syntaxe specifikace formátu: funkce printf a wprintf

Popisuje syntaxi formátování řetězců argumentů pro printf, wprintf a příbuzné funkce.Jsou k dispozici bezpečnější verze některých z těchto funkcí, další informace naleznete v tématu Funkce zabezpečení v CRT.Další informace o jednotlivých funkcích naleznete v dokumentaci pro jednotlivé funkce.Seznam těchto funkcí naleznete v tématu I/O proudu.

Specifikace formátu se skládá z povinných a volitelných polí, a má následujícím formát:

%[příznaky] [šířka] [.přesnost] [{h | l | ll | w | I | I32 | I64}] typ

Každé pole specifikace formátu je znak nebo číslo, které určuje danou formátovací volbu nebo specifikátor konverze.Povinný znak type určuje druh konverze, který bude na argument aplikován.Volitelná pole flags, width a precision ovládají další aspekty formátu.Základní specifikace formátu obsahuje pouze znak procent a znak type, například %s, což specifikuje konverzi na řetězec.Pokud je znak procent následován znakem, který nemá žádný význam, je tento znak vypsán na výstup beze změny.Pro výpis znaku procent je třeba použít %%.

Pole specifikace formátu ovládají následující aspekty konverze a formátování argumentu:

  • type
    Povinný znak specifikátoru konverze, který určuje, zda bude argument interpretován jako znak, řetězec, celé číslo nebo číslo s plovoucí desetinnou čárkou.Další informace naleznete v tématu Znaky pole typu printf.

  • flags
    Volitelný znak nebo znaky, které určují zarovnání výstupu a výstup znamének, prázdných znaků, úvodních nul, desetinných čárek, osmičkových a šestnáctkových předpon.Další informace naleznete v tématu Direktivy příznaku.Ve specifikaci formátu se může objevit více než jeden příznak, a to v libovolném pořadí.

  • width
    Volitelné desítkové číslo, které určuje minimální počet znaků výstupu.Další informace naleznete v tématu Specifikace šířky printf.

  • precision
    Volitelné desítkové číslo, které určuje maximální počet vypsaných znaků pro řetězec, počet významných číslic nebo počet číslic za znakem desetinné čárky, pro čísla s plovoucí desetinnou čárkou, nebo minimální počet vypsaných číslic pro celá čísla.Další informace o tématu "Jak hodnoty přesnosti ovlivňují typ" Specifikace přesnosti.

  • h | l | ll | w | I | I32 | I64
    Volitelné předpony pro type určují velikost odpovídajícího argumentu.Další informace o tématu "Velikost předpon" Specifikace velikosti.

Poznámka k zabezpečeníPoznámka k zabezpečení

Je nutné zajistit, že specifikace formátu řetězců není definována uživatelem.Například uvažujte program, který vyžaduje od uživatele zadání jména, a ukládá vstup do řetězce, který se jmenuje name.Pro výpis name není vhodné použít:

printf( name ); /* Danger! If name contains "%s", program will crash */

Místo toho je lepší použít:

printf( "%s", name );

Viz také

Referenční dokumentace

printf, _printf_l, wprintf, _wprintf_l

printf_s, _printf_s_l, wprintf_s, _wprintf_s_l

printf_p – poziční parametry

Direktivy příznaku

Specifikace šířky printf

Specifikace přesnosti

Specifikace velikosti

Znaky pole typu printf