Printf C: popis, formátovanie, príklady

Štandardná funkcia výstupu konzoly v C - printf. Popis je obsiahnutý v hlavičkovom súbore stdio.h. Pomocou tejto funkcie môžete do konzoly odosielať dáta alebo vlastné správy. C je veľké a malé písmená. Napríklad dve funkcie printf a scanf sa líšia od funkcií Printf a Scanf. Všetky znaky vo funkciách printf a scanf musia byť tiež písané malými písmenami. Jeden z najjednoduchších príkladov jazyku C, ktorý zobrazuje známy pozdrav Hello World, sú:


Stanovenie printf funkcie v súbore "stdio.h"

Súbor "stdio.h" sa vzťahuje na štandardné knižnice I /O v jazyku C popis printf a podobných funkcií, v nich obsiahnuté, ako nasleduje:
Uvedené funkcie generujú načítanie údajov z určitých miest, konvertujú ich na reťazec znakov, posielajú sa do špecifikovaných výstupných prúdov.

funkčné skupiny printf

skupiny printf v C sa používajú na spracovanie a formátovanie dátových výstupov v štandardnom vlákne. A funkcie printf a produkovať záznam vprintf na štandardný výstup stdout, funkcia fprintf a vfprintf poslal hodnoty argumentov sú zobrazené v určitom výstupným prúdom a snprintf, sprintf, vsnprintf a vsprintf zaznamenávať dáta na reťazec znakov. Všetky tieto funkcie fungujú pomocou formátovacieho reťazca označujúceho potrebnú konverziu argumentov pre výstup.
Funkcia fprintf zapíše výsledok do výstupného toku prúdu. V vyrovnávacej pamäti, ktorá predstavuje znakový reťazec, sa vygeneruje výsledok funkcie sprintf. Chovanie funkcie nie je definovanéak riadok, ktorý sa má odvodiť, presahuje veľkosť vyrovnávacej pamäte.


snprintf funkcie rovnakým spôsobom ako predchádzajúci, písanie dát do vyrovnávacej pamäť reťazca. Výsledný reťazec znakov končí znakom null, pokiaľ bufsz (veľkosť vyrovnávacej pamäte) nie je nula. V opačnom prípade, ak bufsz nulové, zobrazí sa vyrovnávacie nič, a vyrovnávacia pamäť môže byť aj nulový ukazovateľ, ale je vypočítaná hodnota (počet bytov, ktoré museli byť písomná) sa stále počíta. Funkcia printf_s spravidla funguje rovnakým spôsobom ako printf, s výnimkou jednej chvíle. Hlavný rozdiel v popise printf_s a printf v C je: printf_s funkcia kontroluje reťazec formátu pre platné znaky na rozdiel od printf, ktorý len kontroluje formát reťazec prázdny ukazovateľ objektu. Pozrime sa bližšie na funkciu printf.

Všeobecný opis

v jazyku C postáv prostredníctvom tlače štandardný výstup pomocou volanie funkcie printf. Tím printf vo formátoch C nastaviť výstupné dáta, a sú zaslané do štandardného výstupu (stdout hodnota odovzdaná ako argumenty funkcií zobrazených v konzole podľa uvedeného formátu riadku, čo obsahuje dva druhy prvkov prvého druhu - .. So zobrazia sa znaky a prvky, ktoré určujú charakteristiky formát dát a spôsob sú zodpovedné za prezentáciu argumenty pri odvodzovaní, patrí do druhého typu
. pri odvodzovaní premenné printf v C špecifických kombinácií znakov na riadok arhu Návrhy sa nahradia konverzioupodľa týchto údajov symbolov a pre každý typ údajov je ich výstupný formát špecifikácie.

Typ funkcie a návratová hodnota

Funkcia printf, ktorá má typ int, vracia celočíselnú hodnotu reprezentujúcu počet znakov vytlačených na obrazovke. Napríklad môžete priradiť: int k = printf ("Hello"% c% d% s " 'a', 11" all "!), A potom sa hodnota premennej k je ľahko určiť, chyba vo výstupe V prípade, že návrat.

Syntax a závislosť

Ak chcete použiť funkciu printf, musíte pripojiť hlavičkový súbor stdio.h nasledovne: #include funkcie šablóny je: int printf (const char * formát) Počas troch bodov sa rozumie zoznam argumentov, ktoré sú predmetom odstránenie funkciu printf m. Auger byť použité s rôznym počtom argumentov, ale prvý z nich je vždy obmedzená na oboch stranách úvodzovkách, a každá ďalšia musí byť oddelený od predchádzajúceho bodu. Čo je napísané v úvodzovkách a v skutočnosti nie je formát špecifikácie, tlačený bez zmeny, v opačnom prípade, spetsyfykator je splnená, je typ hodnoty skopírovaný Forma formát úloha listov:.% [flags] [šírka] [.pozytsyya] [dĺžka] typ

Formát printf v východiskovými hodnotami C

Čítanie formát reťazca, ktoré je uvedené v zátvorkách za názvom funkcie, sa vyskytuje len v jednom smere, zľava doprava, prvý argument indikovaná po rovnakej línii pochádzajúce iba prípad, aksplnila prvú špecifikáciu. Do tej doby až do konca roka formátu reťazca v ňom uvedené špecifikácie začne konverziu a tlače týchto argumentov. The entry formátu polotovary považované za obyčajného charakter, musia byť uzatvorené, ak nie je používaný v špecifikácii výraz formáte.
Symbol "%" označuje začiatok špecifikácie špecifikácie výstupu, za ktorým nasleduje formátový kód. Všetky polia v špecifikácii sú oddelené, definujú podmienky na formátovanie čísel alebo symbolov. Formátovaný výstup printf v C má svoje vlastné zvláštnosti. V prípade, že počet uvedených argumentov prekročí počet špecifikácií formátu, budú preskočení a nebudú zobrazené. V opačnom prípade, ak je špecifikácia formátu, než sú hodnoty v zozname, ktoré majú byť vytlačené argumentov, čo je výsledok volanie funkcie nie je definovaná. Zo zrejmých indikáciou, že tvrdenie rad by mala zahŕňať môže použiť "% m $" namiesto "%" a "* m $" namiesto "*", a m, celé číslo desiatkovej označuje argument polohy požadovanej (indexovanie začne s jedným) ,



stream



výstupného prúdu na zápis do súboru



, vyrovnávacia pamäť
(36 )

Ukazovateľ na reťazec znakov pre neskôr (39 záznamu)


bufsz



Určuje počet znakov pre záznam: maximum hodnota - bufsz-1 a nulový obmedzovač



formát



Index k Viacbytové reťazec s nulovou obmedzenia, ktorá určuje, ako interpretovať výstupných argumentov

Vlajky,




-



výsledky vedenie na zľava doprava výstup



+



odvodzovanie číselnú hodnotu, to znamenie násilne tlačený "+" na kladnú hodnotu (predvolené sa zobrazí len "-" k zápornej hodnoty)



0



pre celé čísla a s plávajúcou čiarkou nuly na začiatku použitý namiesto znaky medzery na vyplnenie ľavých číslic v prípade prekročenia šírky poľa dĺžka čísla Pri celých číslach sa vlajka ignoruje, ak je presnosť presne špecifikovaná. Pri ostatných konverziách používajúcich tento príznak nie je definované správanie funkcie. Príznak "0" je ignorovaný, ak je prítomný príznak "-"



priestor



V prípade, že výsledok je na výstupe výraz, ktorý je znakom nezačína znak tohto znamienka alebo prázdne, potom sa k výsledku pridá priestor. Flag "priestor" je ignorovaný v prípade, že je označená ako "+"



#



Vyhotovenie alternatívnu formu konverzie
,
, kontrolné sekvencie

Postupnosť



Výsledok



a
120)

n



Preklad novej linky



R



Návrat kurzor na horný riadok



t



okrajov



v


Vertikálna tabuľka



"



Záver dvojité tlapky
61)




Záver lomítka

Rôznešpecifikácia formátu



Formát Spetsyfykator



Použitie a opis printf C



Argument tovar



%



záznamu doslovný "%"







c



Uzavretie jeden znak. Existuje argument na konverziu nepodpísaného znaku. Pri použití modifikátora argumentom "L" sa prevedie na reťazec znakov



bez znamienka char



s



Vytlačte reťazce znakov. Toto tvrdenie musí byť kurzor na počiatočnú prvok poľa znakov char



char *



d
i



Záver desatinné znázornenie celé číslo so znamienkom



int



, o



Záver osmičkové podanie bez podpísanej celé číslo hodnoty



unsigned int



x
X



Záver hexadecimálne reprezentácia bez hodnoty celočíselného znaku. Na konverziu znaku "x" sa používajú znaky "a", "b", "c", "d", "e", "f". Pre transformáciu "X" - "A", "B", "C", "D", "E", "F"



unsigned int



u



Záver dekadické bez podpísané celočíselnú hodnotu. V prípade, že prevedenú hodnotu a presnosť spolu presne 0, nie sú zobrazené znaky



unsigned int



, f
F


,
Záver desatinné reprezentácie s plávajúcou desatinnou čiarkou, čo je ochranná známka



dvojito



, e
, e



Záver desatinné exponenciálna reprezentácia s plávajúcou desatinnou čiarkou, zaoblená a previesť tak, žepred tým, než čiarka je jedno číslo a počet číslic za desatinnou čiarkou zodpovedá presne reprezentujú (default presnosť 6 a 0, ak zadaný znak čiarka sa nezobrazuje vôbec). Symbol "e" je zobrazená v hornej alebo dolnej prípade v závislosti na konverziu



dvojito



a
, A


,
Záver hexadecimálne reprezentácie čísel s plávajúcou desatinnou čiarkou



dvojito



, g
g

(312 )
Záver desatinné reprezentácie s plávajúcou desatinnou čiarkou alebo desatinné exponenciálnym zastúpenie v závislosti na hodnote a presnosti



dvojito



n (322 )


Vráti počet prvkov vytlačených funkciou printf. Výsledok je napísaný v premennej danom argumentom. Špecifikácie nesmie obsahovať príznaky, šírka poľa alebo presnosť



int *



, P



Záver ukazovateľ



void *

šírka modifikátor pole

V printf formát reťazec C môže byť celé číslo po znak percent a formát tímu. Ide o modifikátor šírky poľa a ovplyvňuje prezentáciu zobrazených údajov. Najmenší rozpätie, aby hodnôt stanovených týmto číslom, a prítomnosť tohto modifikátora, ak je argument je menšia než vybraného poľa it, pridáva sa v dôsledku medzier a núl. Predvolená výplň je medzera, ale môžete nastaviť nulu tak, že ju zaregistrujete pred špecifikáciou šírky. Modifikátor špecifikuje minimumšírka a viac ako táto minimálna hodnota sa vytlačí bez rušenia. Napríklad počet pozostávajúci z menej ako 8 znakov a napísaný špecifikáciou "% 08d" bude doplnený o nuly na požadovaných 8 znakov. Podobné modifikátory môžu tiež špecifikovať parametre pre presnosť alebo zarovnanie.

Modifikátor presnosti

Modifikátor presnosti slúži na určenie počtu vytlačených znakov v reprezentácii čísel. Ak chcete pridať modifikátor presnosti, musíte po zadaní špecifikácie šírky poľa zadať bodku a po nej špecifikovať správnu presnosť. Modifikátor presnosti je definovaný pre formáty "e", "f", "a", "E", "A" a "F". Pre celé čísla modifikátor nastaví počet zobrazených číslic pridaním nuly ľavým, ak je to potrebné, a pri odčítaní racionálnych čísel určuje požadovaný počet desatinných miest. Pre termín premenné: nasledujúci po čísle bodu v modifikátore presnosti slúži ako prostriedok na určenie maximálnej dĺžky poľa, keď sa odvodí. Napríklad pri špecifikácii formátu "% 4.8 s" sa zobrazí reťazec, ktorého dĺžka je v rozsahu od štyroch do ôsmich znakov, v prípade prebytku sa extrémne znaky vynechajú.

Ďalšie modifikátory formátu

Predvolené zarovnanie je zarovnanie na pravom okraji, ale môže byť zmenené umiestnením znaku "-" po "%". Táto špecifikácia formátu nastavuje zarovnanie na ľavom okraji. Okrem toho funkcia printf môže rozlišovať medzi krátkymi a dlhšími typmi celočíselných výstupov. Prípustné špecifikátory: "pro","d", "u", "i", "x" a "x". Dlhý typ hodnoty je nastavený modifikátorom "l" a krátkym typom je modifikátor "h". Napríklad pri výstupe dlhého celočíselného formátu a hodnota nespresneného krátkeho typu špecifikácie typu int vyzerá ako "% ld" a "% hu".

, dĺžka



Opis



H



pre typy zariadení s krátkym dosahom, alebo bez znamienka





Pre dlhé dvojité

Príklady

1. Popis printf C a výsledky volania každej funkcie:
2. Záver na obrazovke jednoduchého dialógu: printf ("message"); 3. Programový kód:
Výrazy uvedené v dvojitých úvodzovkách predtým, než sa na obrazovke vytlačia špecifikácie formátu, ako aj argumenty, ktoré nasledujú po formátovacom reťazci. Výsledok vyššie uvedených funkcií printf C, popis výstupu:
Tento príklad ilustruje výstup obrazovky pomocou rôznych formátov riadkov, celočíselných premenných, symbolov a čísel s pohyblivou čiarou.

Štandardná vstupná funkcia scanf a príklady jej použitia

Funkcia scanf použitá na čítanie sa zadáva z dátovej klávesnice. Opis printf a scanf v C je uvedený v hlavičkovom súbore "stdio.h". scanf ("špecifikátory formátu", & hodnota1 & hodnota2);
Jednoduchý príklad práce s funkciou scanf: #include int main () {int a; plavák b; scanf ("% d% f" & amp; b); }

Súvisiace publikácie