Printf C: opis, oblikovanje, primeri

Standardna funkcija izhoda konzole v C - printf. Opis je vsebovan v datoteki glave stdio.h. S to funkcijo lahko na konzolo oddajate podatke ali sporočila po meri. C je občutljiv na velike in male črke. Na primer, dve funkciji printf in scanf sta različni od funkcij Printf in Scanf. Vsi znaki v funkcijah printf in scanf morajo biti napisani tudi z malimi črkami. Eden od najpreprostejših primerov C printf, ki prikazuje pozdravne pozdrave hello sveta, je:


Določite funkcijsko skupino printf v datoteki "stdio.h"

Datoteka "stdio.h" pripada standardni knjižnici I /O v C. Opis tiskanja in podobnih funkcij je v njem naveden takole:
Navedene funkcije ustvarjajo nalaganje podatkov z določenih lokacij, jih pretvarjajo v niz znakov, pošiljajo določene specifične izhodne tokove.

Družina funkcije printf

funkcije skupine printf v C se uporablja za obdelavo in formatiranje podatkovnih izhodov v standardni niti. Poleg tega funkcije printf in vprintf ustvarjajo zapis v standardnem toku stdout, funkcije fprintf in vfprintf pošiljajo vrednost argumentov v nekaterih podanih izhodnih tokovih, in snprintf, sprintf, vsnprintf in vsprintf zapišejo podatke v niz znakov. Vse te funkcije delujejo z uporabo formata, ki označuje potrebno pretvorbo argumentov za izhod.
Funkcija fprintf zapiše rezultat v izhodni tok toka. V medpomnilniku, ki predstavlja niz znakov, se prikaže rezultat funkcije sprintf. Vedenje funkcije ni definiranoče vrstica, ki jo je treba odšteti, presega velikost polja vmesnega pomnilnika.


Funkcija snprintf, tako kot prejšnja, zapiše podatke v medpomnilnik nizov. Rezultat niza znakov se konča z ničelnim znakom, razen če bufsz (velikost medpomnilnika) ni nič. V nasprotnem primeru, če je vrednost bufsz nič, se v medpomnilniku ne prikaže ničesar in sam vmesni pomnilnik je lahko ničelni kazalec, vendar se izračunana vrednost (število bajtov, ki bi jih morali zapisati) še izračuna. Funkcija printf_s običajno deluje na enak način kot printf, z izjemo enega trenutka. Glavna razlika v opisu printf_s v C in printf je naslednja: funkcija printf_s preveri obliko zapisa za prisotnost veljavnih znakov, za razliko od printf, ki preveri samo niz formata za prazen kazalec. Oglejmo si podrobneje funkcijo printf.

Splošni opis

V jeziku C se znaki natisnejo prek standardnega izhodnega toka s klicanjem funkcije printf. Ukaz printf v formatu C sestavi niz izhodnih podatkov in se pošlje v standardni izhodni tok (stdout.) Vrednosti, posredovane kot argumenti funkcije, se vnesejo v konzolo glede na podano vrstico oblikovanja, ki vsebuje dve različici elementov. znaki, ki so prikazani na zaslonu, in elementi, ki določajo posebnosti formata podatkov in so odgovorni za metodo predstavljanja argumentov v izpeljanki, se nanašajo na drugi tip. Ments se zamenja s pretvorbo vglede na te podatke simbolov in za vsako vrsto podatkov obstaja njihova specifikacija izhodnega formata.

Tip funkcije in vrnjena vrednost

Funkcija printf, ki ima tip int, vrne celo število, ki predstavlja število znakov, natisnjenih na zaslonu. Na primer, lahko dodelite: int k = printf ("Hello"% c% d% s, "a", 11 "za vse!"), In potem z vrednostjo k, je enostavno ugotoviti, v izhodu je napaka.

Sintaksa in odvisnost

Če želite uporabiti funkcijo printf, morate povezati glavo datoteke stdio.h na naslednji način: #include Predloga funkcije izgleda tako: int printf (const char * format,) Tri pike se nanašajo na seznam argumentov, ki jih je treba izpeljati. Uporabiti ga je treba z različnim številom argumentov, vendar je prvi vedno omejen na obe strani z dvojnimi tacami, vsak naslednji pa mora biti ločen od prejšnje vejice, dejstvo, da je napisano v dvojnih narekovajih in ni specifikacija formata, je natisnjeno brez sprememb, sicer, če je specifikator izpolnjen, se kopira njegova vrednost. Oblika zapisa specifikacije obrazca:% [zastavice] [širina] [položaj] [dolžina] vrsta

Oblikovanje printf v C izhodu

Branje formata niza, ki je podan v oklepajih po tem, ko se ime imenuje funkcija, se pojavlja samo z ene strani na levo na desno in prvi argument, naveden za samo črto, se prikaže samo v tem primeruizpolnjena prva specifikacija. Dokler formatni niz ni dokončan, bodo podane specifikacije v njem sprožile pretvorbo in tiskanje naslednjih argumentov. V vrstici s formatom se presledek obravnava kot običajen znak in se prenese v zaključek v primerih, ko se ne uporablja pri izražanju specifikacije formata.
Simbol "%" označuje začetek specifikacije izhodne specifikacije, ki mu sledi koda formata. Vsa polja v specifikaciji so ločena, določajo pogoje za oblikovanje številk ali simbolov. Formatiran izhod printf v C ima svoje posebnosti. Če število naštetih argumentov preseže število specifikacij formata, se preskoči in ne prikaže. V nasprotnem primeru, če so specifikacije formata večje od vrednosti seznama za tiskanje, rezultat klica ni določen. Za eksplicitno navedbo, kateri argument argumenta je treba uporabiti, je mogoče uporabiti "% m $" namesto "%" in "* m $" namesto "*", m, celo število decimalnih vrednosti, označuje položaj želenega argumenta (indeksiranje se začne z enoto) .

Parametri



tok



izhodni tok za pisanje v datoteko



varovalni pas

)

Kazalec na niz znakov za nadaljnje snemanje v njem



bufsz



Določa število znakov, ki jih lahko pišemo: največ vrednost je bufsz-1 in še vedno ničelna omejitev



format



Kazalec na večbajtni niz z ničelno omejitvijo, ki določa, kako interpretirati argumente 55)
Zastave,

Zastava



Opis



-



Rezultat se poravna z levim robom izhodnega polja



+



Kadar je numerična vrednost izvedena, ima znak pred tipom "+" pred pozitivno vrednostjo



0



Za cela števila in števila s plavajočo vejico se namesto negativne vrednosti uporabijo vodilne ničle namesto "-". presledki za zapolnitev levega števila v primeru, če je širina polja presežena dolžino številke Za cela števila se zastavica prezre, če je natančnost natančno določena. Za druge pretvorbe, ki uporabljajo to zastavico, obnašanje funkcije ni definirano. Oznaka "0" se ne upošteva, če je prisotna oznaka "-"



prostora



. znak tega znaka ali prazen, potem se rezultatu doda prostor. Presledek "zastavica" se prezre, če obstaja oznaka "+"



#



Izvaja se alternativna oblika pretvorbe

Kontrolna zaporedja 105)
Zaporedje



Rezultat



a



Zvočni signal
120)

n



Prevajanje v novo vrstico



r



Vrnitev kazalca na začetek vrstice



t



zavihki



v



Vertikalna tabelacija



"



Zaključek dvojne tace

61)




Zaključne poševnice

RazličneFormat specifikacij



Format specifikacije



Uporaba in opis tiskanja C



Vrsta argumenta



%



Pisanje literalov "%"







196)


Zaključek enega simbola. Obstaja argument za pretvorbo nepodpisanega znaka. Pri uporabi modifikatorja "l" se argument pretvori v niz znakov



nepodpisani char



s



Natisni nize znakov. Argument mora biti kazalec na začetni element znakovnega niza char



char *



d
i



Zaključek decimalne predstavitve celoštevilske vrednosti z znakom



int



o



Osmerokotna ugotovitev reprezentacija brez vrednosti celega števila



nepodpisani int



x
X



Zaključek šestnajstiški predstavitev brez znaka. Za pretvorbo "x" se uporabljajo znaki "a", "b", "c", "d", "e", "f". In za transformacijo "X" - "A", "B", "C", "D", "E", "F"



nepodpisani int



u



Zaključek decimalnega preoblikovanja brez podpisane celoštevilske vrednosti. Če sta pretvorjena vrednost in natančnost skupaj 0, potem znaki niso prikazani



nepodpisani int



f
F

273)
Zaključek decimalne predstavitve števila s plavajočo vejico, ki ima znak



double



e
E
285)

Zaključek decimalnega eksponencialnega prikaza plavajoče točke, zaokrožen in pretvorjen tako, daEna številka ostane pred vejico, število števk za vejico pa ustreza natančnosti prikaza (privzeto je točnost 6, če pa je podana 0, simbol sploh ni prikazan). Simbol "e" je prikazan v zgornjem ali spodnjem primeru, odvisno od preoblikovanja



dvojno



a
A

299)
Zaključek šestnajstiškega prikaza števila s plavajočo vejico


dvojno



g
G


)
Zaključek decimalne predstavitve števila s plavajočo vejico ali njene decimalne eksponencialne reprezentacije, odvisno od vrednosti in točnosti



double



n
)


Vrne število elementov, ki jih natisne funkcija printf. Rezultat se zapiše v spremenljivko, ki jo podaja argument. Specifikacija ne sme vsebovati zastav, širin polj ali natančnosti



int *



p



Zaključek kazalec



void *

Modifikator širine polja

V vrstici s formatom printf C se lahko zapiše celo število po znaku za odstotek in pred ukazom za oblikovanje. Gre za modifikator širine polja in vpliva na prikaz prikazanih podatkov. Najmanjša širina polja za vrednost je določena s to številko in prisotnost takšnega modifikatorja v primeru, da se argument izkaže, da je manjši od dodeljenega polja, povzroči rezultat vrzeli ali ničel. Privzeto polnilo je presledek, vendar ga lahko nastavite tako, da ga registrirate pred specifikacijo širine. Modifikator določa minimumširina in nobena večja od te najmanjše vrednosti se natisne brez motenj. Številka, ki je sestavljena iz manj kot osmih znakov in je vtipkana s specifikacijo "% 08d", se bo dopolnila z ničlami ​​na zahtevanih osem znakov. Podobni modifikatorji lahko določijo tudi parametre za natančnost ali poravnavo.

Modifikator natančnosti

Modifikator natančnosti služi za določanje števila natisnjenih znakov v prikazu številk. Za dodajanje modifikatorja natančnosti morate za specifikacijo polja širine dati piko in določiti pravilno natančnost za njo. Modifikator natančnosti je definiran za formate "e", "f", "a", "E", "A" in "F". Za cela števila, modifikator nastavi število prikazanih številk, doda ničle levičarji, če je potrebno, in pri izločitvi racionalnih številk določi zahtevano število decimalnih mest. Za izraz spremenljivke: naslednji po številu točk v modifikatorju točnosti služi kot sredstvo za določanje največje dolžine polja, ko se izvede. Na primer, s specifikacijo formata "% 4.8 s" se prikaže niz, katerega dolžina je v razponu od štiri do osem znakov, v primeru presežka pa bodo skrajni znaki izpuščeni.

Drugi modifikatorji oblike

Privzeta poravnava je poravnava na desnem robu, vendar jo je mogoče spremeniti tako, da znak "-" postavite za "%". Ta specifikacija formata nastavi poravnavo na levem robu. Poleg tega lahko funkcija printf razlikuje med kratkimi in dolgimi tipi celoštevilskih izhodov. Dovoljene specifikacije: "pro","d", "u", "i", "x" in "x". Dolgo vrsto vrednosti nastavimo z modifikatorjem "l", kratko pa z modifikatorjem "h". Na primer, ko oddajate dolgo celo število, vrednost nepodpisanega kratkega formata specifikacije int tipa pa izgleda kot "% ld" oziroma "% hu".

Dolžina



Opis



h



Za tipe kratke ali nepodpisane





Za dolgo dvojno

Primeri

1. Opis printf C in rezultati klicanja vsake funkcije:
2. Zaključek na zaslonu enostavnega pogovornega sporočila: printf ("message"); 3. Koda programa:
Izrazi, podani v dvojnih narekovajih, preden so specifikacije formata natisnjene na zaslonu, in argumenti, ki sledijo nizu formatov. Rezultat zgoraj navedenih funkcij printf C, opis izhoda:
Ta primer prikazuje izhod zaslona z uporabo različnih vrstic, celoštevilskih spremenljivk, simbolov in številk s plavajočo vejico.

Standardna vhodna funkcija scanf in primeri njene uporabe

Funkcija scanf, ki se uporablja za branje, se vnese iz podatkovne tipkovnice. Opis printf in scanf v C je predstavljen v naslovni datoteki "stdio.h". scanf ("specifikatorji formata", & amp; vrednost1 & vrednost2);
Preprost primer dela s funkcijo scanf: #include int main () {int a; float b; scanf ("% d% f" & amp; b); }

Sorodne publikacije