Printf
funkce pro výpis formátovaného řetězce původně pocházející z jazyka C, později použitá i v dalších jazycích From Wikipedia, the free encyclopedia
Remove ads
printf
je funkce v programovacím jazyce C, která provádí formátovaný výpis dat v textové podobě.
Funkce má proměnný počet parametrů a na standardní výstup vypíše textový řetězec zadaný prvním parametrem, v němž jsou formátovací direktivy nahrazeny hodnotami dalších parametrů. Použitý způsob formátování byl převzat do mnoha dalších programovacích jazyků a některé unixové shelly obsahují stejně pojmenovaný příkaz pro formátovaný výpis dat.
Remove ads
Příklad použití
printf("Dnes je %s %d. %s %d; teplota je %+.1f stupňů Celsia.\n", dny_v_tydnu[dt], den, mesice[mesic], rok, teplota);
může vypsat
Dnes je středa 11. července 2018; teplota je +20.5 stupňů Celsia.
s odřádkováním na konci.
Příbuzné funkce
Ve standardní knihovně jazyka C je několik podobných funkcí deklarovaných v hlavičkovém souboru stdio.h
:
printf
– pro formátovaný výpis na standardní výstupfprintf
– pro formátovaný výstup do libovolného souboru, resp. datového proudu otevřeného pro výstupsprintf
– ukládá výstup do řetězcesnprintf
– ukládá výstup do řetězce omezené délky
Dále existují varianty pro výstup řetězců v kódování UTF-32 složených ze znaků wide char
(typu wchar_t
); tyto funkce mají ve jméně wprintf
místo printf
, a funkce deklarované v hlavičkovém souboru stdarg.h
, jimž se volitelné parametry předávají pomocí struktury va_list
, jejichž jména začínají písmenem v
– například funkce vswprintf
ukládá výstup zadaný strukturou va_list
a formátovacím řetězcem typu wchar_t *
a do řetězce téhož typu omezené délky (varianty pro wide char
pracují vždy s řetězci omezené délky a jejich jména místo sn
obsahují pouze sw
).
Všechny uvedené funkce vracejí počet zapsaných znaků nebo zápornou hodnotu v případě chyby.
Podobnou filozofii mají funkce řady scanf
, které provádějí naopak vstupní konverzi.
Remove ads
Formátovací řetězec
Jedním z parametrů všech uvedených funkcí je formátovací řetězec, který může obsahovat sekvence pro výpis řídicích znaků začínající znakem zpětné lomítko (\
) a formátovací direktivy začínající znakem procento (%
).
Syntaxe
Syntaxe formátovacích direktiv je následující:
%[číslo parametru][příznaky][šířka][.přesnost][velikost]typ
Typ
Jako typ lze použít některý z níže uvedených znaků:
Velikost
Pole velikost udává přesný typ příslušného parametru:
Např.: printf("%ld", (long int) 1234567)
Přesnost
U formátů s pohyblivou řádovou čárkou udává, na kolik desetinných míst má být výpis čísla zaokrouhlen; u řetězců udává maximální počet znaků, které mají být vypsány.
Pole může být vynecháno, může být zadáno číslem, nebo hvězdičkou; hvězdička znamená, že hodnota je zadána parametrem typu int
.
Např. printf("%.*s", 3, "abcdef")
vypíše abc
Šířka
Šířka udává minimální počet znaků, které mají být vypsány; pokud by byl výstup kratší bude doplněn mezerami (přesný způsob závisí na použitých příznacích). Pole šířka nikdy nezpůsobí zkrácení výpisu.
Zadání šířky může být vynecháno, může být použito číslo, nebo hvězdička; hvězdička znamená, že hodnotu udává další parametr typu int
Např. printf("%0*d", 5, 10)
vypíše 00010
.
Příznaky
Je možné použít žádný, jeden nebo více příznaků v libovolném pořadí:
Číslo parametru
Číslo parametru je rozšíření POSIX, které není obsaženo v normě C99. Používá se například při lokalizaci softwaru, když je potřeba změnit pořadí slov zadaných jako parametry. Pokud je číslo parametru použito v jedné formátovací direktivě, musí být použito u všech v daném volání printf. Jeho tvar je:
Remove ads
Odkazy
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads