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í |
---|
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