OqPoWah.com

Printf C: opis, oblikovanje, primeri

Standardna funkcija izhodne konzole v C je printf. Njen opis je vsebovan v datoteki header stdio.h. S to funkcijo lahko izpiąete podatke ali uporabniąka sporočila v konzolo. Jezik C je občutljiv na velike in male črke. Na primer, dve funkciji printf in scanf se razlikujejo od Printf in Scanf, podobno kot njihova. Vse znake v funkcijah printf in scanf morajo biti tudi male črke. Eden od najpreprostejših primerov C printf, ki prikazuje znani pozdravni svet, je:

printf c opis

Določanje funkcij skupine printf v datoteki "stdio.h"

Datoteka "stdio.h" se nanaša na standardno knjižnico I / O v jeziku C. Opis funkcij printf in podobnih funkcij je podan v nadaljevanju:

printf c opis

Naštete funkcije izvajajo nalaganje podatkov z določenih lokacij, jih pretvarjajo v niz znakov in jih pošljejo v določene izhodne tokove.

Funkcija family printf

Funkcije skupine printf v jeziku C služijo obdelavi in ​​formatiranju izhodnih podatkov v standardni tok. Poleg printf vprintf in snemanja ustvariti standardni tok stdout, fprintf vfprintf in funkcija vrednosti izhodne argumente poslana na neki vnaprej določeni izhod, in snprintf, sprintf, vsnprintf vsprintf in zapisovanje podatkov v niz znakov. Vse zgornje funkcije delujejo z uporabo formatnega niza, ki prikazuje potrebne konverzije argumentov za izhod.

formatiranje printf c

Funkcija fprintf zapisuje rezultat v izhodni tok. Vmesni pomnilnik, ki je niz znakov, natisne rezultat funkcije sprintf. Obnašanje funkcije je nedefinirano, če niz, ki ga želite oddati, presega velikost vmesnega polja.

Funkcija snprintf, tako kot prejšnja, zapisuje podatke v niz vmesnika. Nastali niz znakov se konča z ničelnim znakom, razen če je bufsz (velikost puferja) nič. V nasprotnem primeru, če je vrednost bufsz nič, potem ni izhoda buffer, in varovalni prav lahko null kazalec, vendar vrne vrednost (število bajtov, ki bi moralo biti zapisano) se vedno izračuna.

Funkcija printf_s na splošno deluje na enak način kot printf, razen za en trenutek. Glavna razlika v opisu printf_s v C in printf je naslednja: funkcija printf_s preveri formatni niz za veljavne znake, za razliko od printf, ki samo preveri formatni niz za prazen kazalec.

Poglejmo si natančneje funkcijo printf.

Splošni opis

V C znaki se natisnejo prek standardnega izhodnega toka, tako da pokličete funkcijo printf. Ukaz printf v C oblikuje izhodne podatke in jih pošljejo v standardni izhodni tok stdout. Vrednosti, ki so bile posredovane kot argumenti funkcij, se oddajajo v konzolo v skladu z določenim nizom oblikovanja, kar vključuje dve vrsti elementov. Prva vrsta so znaki, prikazani na zaslonu, in elementi, ki določajo značilnosti oblike podatkov in so odgovorni za način predstavitve argumentov v izhodu, so povezani z drugo vrsto.

Pri tiskanju spremenljivk iz printf v C se posebne kombinacije znakov v nizu argumentov nadomestijo s podatki, pretvorjenimi v skladu s temi simboli, in za vsako vrsto podatkov so lastne specifikacije za izhodni format.

Vrsta funkcije in vrnjena vrednost

Funkcija printf tipa int vrne celo število, ki označuje število znakov, natisnjenih na zaslonu. Na primer, lahko dodelite:

int k = printf ("Pozdravljeni% c% d% s", "a", 11, "vsi!")

in nato iz vrednosti spremenljivke k, je težko ugotoviti, ali je prišlo do napake v izhodu. Če je povratna vrednost negativna (če funkcija vrne "-1"), lahko ugotovite, da je prišlo do napake med njegovo izvedbo.

Sintaksa in odvisnosti

Če želite uporabiti funkcijo printf, morate datoteko glave "stdio.h" namestiti na naslednji način:

#include

Predloga funkcije izgleda takole:

int printf (const char * format, ...)

Elipsa se nanaša na seznam argumentov, ki jih je treba izpisati. Funkcijo printf lahko uporabite z različnim številom argumentov, vendar je prva na obeh straneh vedno omejena z dvojnimi narekovaji, vsaka naslednja pa mora biti ločena od prejšnjih vejic. Kaj je napisano v dvojnih narekovajih in ni specifikacija oblike je natisnjena brez sprememb, v nasprotnem primeru, če se kvalificira, se vrne njena vrednost kopira.

Formatiranje specifikacije oblike:

% [zastave] [širina] [položaj] [dolžina] vrsta

printf c izhodne spremenljivke

Oblikovanje izhodnih vrednosti od printf do C

Branje obliko linije, ki je prikazana v oklepajih ime funkcije, ki se imenuje, se pojavlja samo v eno smer: od leve proti desni, in se prikaže prvi argument, ki je določen, ko večina tega niza le, če je specifikacija prvič srečala. Dokler se vrstica format ne konča, bodo specifikacije, navedene v njej, sprožile preoblikovanje in tiskanje nadaljnjih argumentov. presledek Oblika niz se obravnava kot običajni značaj in prenesejo do zaključka, v primerih, ko se ne uporablja v specifikaciji izraz formatu.

Simbol "%" označuje začetek specifikacije izhodnega formata, ki ji sledi kodo oblike. Vsa polja v specifikaciji so ločena in določajo pogoje oblikovanja številk ali simbolov.

Formatirani izhod printf v C ima lastne značilnosti. Če število navedenih argumentov presega število specifikacij formatov, jih preskočimo in ne izstopimo. V nasprotnem primeru, če je specifikacija formata večja od vrednosti na seznamu argumentov, ki jih želite natisniti, rezultat klica funkcije ni določen.




Za natančno določa, da je vrsta trditev treba uporabiti, možnost uporabe "% $ m" namesto "%" in "* $ m" namesto "*" in m celo število decimalno vrednost, ki predstavlja želeno argument položaj (indeksiranje začne z enim) .

Parametri

tokIzhodni tok za pisanje v datoteko
puferPokazatelj na niz znakov za nadaljnje pisanje
bufszDoloča število znakov, dopustna za pisanje: največja vrednost je bufsz-1 in še en null terminator
formatuKazalec na multibajtni niz z ničelnim ločilom, ki določa, kako razlagati izhodne argumente
Zastoji, uporabljeni v nizu formatov
ZastavaOpis
-Poravnajte rezultat na levo v izhodnem polju
+Ko izpiąemo ątevilčno vrednost z znakom, je "+" prisiljena natisniti pred pozitivno vrednostjo (privzeto je pred negativno vrednostjo prikazana samo ";"
0Za cela števila in številke s plavajočimi točkami se namesto znakov za presledek uporabijo vodilne ničle, da zapolnijo leve števke, če je določena širina polja, ki presega dolžino številke. Za cela števila je zastava prezrta, če je natančnost izrecno navedena. Za druge transformacije, ki uporabljajo to zastavo, je vedenje funkcije nedefinirano. Zastava "0" se ne upošteva, če je zastava ";"
prostorČe se rezultat izraza, ki ima znak, ne začne z znaki tega znaka ali je prazen, se rezultatu doda prostor. Zastava "space" se zanemari, če je oznaka "+"
#V teku je alternativna oblika preusmeritve
Nadzorne sekvence
ZaporedjeRezultat
aBeep
nPrevod v novo vrstico
rVrnitev kurzorja na začetek vrstice
tTabulacija
vVertikalna tabela
"Dvojni izpisi
Izhodna poševnica

Različni specifikatorji formata

Specifikator oblikovanjaUporaba in opis za printf CVrsta trditve
%Napisati dobesedno "%"
cIzhod en znak. Argument se pretvori v nepodpisani znak. Pri uporabi modifikatorja "l" se argument pretvori v niz znakovnepodpisani znak
sNatisnite niz znakov. Argument mora biti kazalec na začetni element matrike znakovchar *
d
i
Rezultat decimalne predstavitve celostne vrednosti z znakomint
oRezultat oktalnega predstavljanja brez podpisane celovite vrednostiunsigned int
x
X
Izvedite heksadecimalno predstavitev brez podano celoštevilske vrednosti. Znaki "a", "b", "c", "d", "e", "f" se uporabljajo za pretvorbo "x". In za transformacijo "X" - "A", "B", "C", "D", "E", "F"unsigned int
uIzvedite decimalno pretvorbo brez vpisanega celega števila. Če sta pretvorjena vrednost in natančnost oba 0, potem ni nobenih simbolovunsigned int
f
F
Rezultat decimalne predstavitve številke s plavajočo vejico z znakomdvojno
e
E
Proizvodnja decimalno zastopanje eksponentne plavajočo vejico, in zaokroži preoblikovala tako, da pred vejico še eno mesto, in število mest za decimalno vejico ustreza točnosti zastopanja (privzeta natančnost je 6, in če podate 0, se vejica ne prikaže sploh). Simbol "e" je prikazan v zgornjem ali spodnjem primeru glede na pretvorbodvojno
a
A
Šestnajstišna predstavitev številke s plavajočo vejicodvojno
g
G
Rezultat decimalne predstavitve številke s plavajočo vejico ali njegove decimalne eksponentne predstavitve, odvisno od vrednosti in natančnostidvojno
nVrnite število elementov, ki jih natisne printf. Rezultat je zapisan v spremenljivko, na katero opozarja argument. Specifikacija ne sme vsebovati zastave, širine polja ali natančnostiint *
strIzhod kazalcavoid *

formatiranje printf c

Modifikator širine polja

V nizu formatov v printf C lahko za znakom odstotka in pred ukazom za oblikovanje zapisate celo število. Je modifikator širine polja in vpliva na predstavitev prikazanih podatkov. Najmanjša širina polja za vrednost je določena s to številko in prisotnost takega modifikatorja, če je argument manjši od dodeljenega polja, povzroči dodajanje presledkov ali ničel do rezultata. Privzeto je znak za prostor, vendar ga lahko nastavite na nič, tako da ga navedete pred širino. Modifikator določa najmanjšo širino in vsaka vrednost, ki presega ta najmanjši znesek, bo natisnjena brez motenj. Številka, na primer sestavljena iz manj kot osmih znakov in natisnjena s specifikacijo "% 08d", bo posodobljena z zahtevanimi osmimi znaki z ničli.

Taki modifikatorji lahko določijo tudi parametre za natančnost ali poravnavo.

Modifikator natančnosti

Natančni modifikator se uporablja za določitev števila decimalnih števil, natisnjenih v številčni predstavitvi. Če želite dodati natančnostni modifikator, morate določiti obdobje po določitvi širine polja in po njej določiti želeno vrednost natančnosti. Modifikator natančnosti je definiran za formate "e", "f", "a", "E", "A" in "F". Za cela števila, modifikator nastavi število prikazanih števk, dodaja ničle na levo številko, če je to potrebno, in pri izračunu racionalnih števil določi potrebno število decimalnih mest. V zvezi s spremenljivkami nizov: naslednja številka po točki v modifikatorju natančnosti služi kot determinant največje dolžine polja na izhodu. Na primer, za določeno specifikacijo formata "% 4.8s" se prikaže niz, katerega dolžina je v razponu od štirih do osmih znakov, če je presežena, se izredni znaki izpuščajo.

Drugi modifikatorji zapisa

Poravnava je privzeto upravičena, vendar je to mogoče spremeniti tako, da se za "%" doda ";". Ta oblika specifikacije nastavi poravnavo na levo.

Poleg tega je funkcija printf sposobna razlikovati med kratkimi in dolgimi vrstami vrednosti celotnega izhoda. Veljavni kvalifikatorji so "o", "d", "u", "i", "x" in "X". Dolgo vrsto vrednosti nastavi modifikator "l", kratki tip pa modifikator "h". Na primer, pri izpisu dolgega števila in vrednosti tipa kratkega nepodpisanega int specifikacije oblike izgledajo tako "% ld" kot "% hu".

DolžinaOpis
hZa kratke ali nepodpisane kratke tipe
lZa dolge ali nepodpisane dolge vrste
LZa dolge dvojne tipe

Primeri

1. Opis printf C in rezultati klica vsake funkcije:

formatiran izhod printf c

2. Prikaz preprostega pogovornega okna:

printf ("sporočilo");

3. Programska koda:

primeri printf c

Izrazi, navedeni v dvojnih narekovajih pred specifikacijami formata, so natisnjeni na zaslonu, pa tudi argumenti, ki sledijo nizu formatov. Rezultat zgornjih funkcij printf C, opis proizvodnje:

printf c primeri

Ta primer ponazarja izhod na zaslon z različnimi oblikami niza, spremenljivki cele številke, simboli in številkami s plavajočimi točkami.

Standardna vhodna funkcija scanf in primere njegove uporabe

scanf c format

Funkcija scanf se uporablja za branje podatkov, vnesenih s tipkovnice. Opis printf in scanf v C je predstavljen v datoteki glave "stdio.h".

scanf ("format specifiers", vrednost1, vrednost2, ...);

c format printf

Preprost primer dela s funkcijo scanf:

#include

int main () {

int a;

float b;

scanf ("% d% f", a, b);

}

Zdieľať na sociálnych sieťach:

Príbuzný