Specifikator formata je niz, ki se uporablja v formatiranih vhodnih in izhodnih funkcijah. Formatni niz določa format vhoda in izhoda. Oblikovni niz se vedno začne z znakom '%'.
Pogosto uporabljeni specifikatorji oblike v funkciji printf() so:
Specifikator formata | Opis |
---|---|
%d ali %i | Uporablja se za tiskanje vrednosti celega števila s predznakom, kjer celo število s predznakom pomeni, da lahko spremenljivka vsebuje pozitivne in negativne vrednosti. |
%in | Uporablja se za tiskanje vrednosti celega števila brez predznaka, kjer celo število brez predznaka pomeni, da lahko spremenljivka vsebuje samo pozitivno vrednost. |
%O | Uporablja se za tiskanje osmiškega celega števila brez predznaka, kjer se vrednost osmiškega celega števila vedno začne z vrednostjo 0. |
%x | Uporablja se za tiskanje šestnajstiškega celega števila brez predznaka, pri čemer se vrednost šestnajstiškega celega števila vedno začne z vrednostjo 0x. Pri tem so abecedni znaki natisnjeni z malimi črkami, kot so a, b, c itd. |
%X | Uporablja se za tiskanje šestnajstiškega celega števila brez predznaka, vendar %X natisne abecedne znake z velikimi črkami, kot so A, B, C itd. |
%f | Uporablja se za tiskanje decimalnih vrednosti s plavajočo vejico. Privzeto natisne 6 vrednosti za '.'. |
% in in | Uporablja se za znanstveno notacijo. Znana je tudi kot mantisa ali eksponent. |
%g | Uporablja se za tiskanje decimalnih vrednosti s plavajočo vejico in uporablja fiksno natančnost, kar pomeni, da bi bila vrednost za decimalnim vnosom popolnoma enaka vrednosti v izhodu. |
%p | Uporablja se za tiskanje naslova v šestnajstiški obliki. |
%c | Uporablja se za tiskanje nepodpisanega znaka. |
%s | Uporablja se za tiskanje nizov. |
%ld | Uporablja se za tiskanje vrednosti celega števila z dolgim predznakom. |
Oglejmo si podrobneje specifikatorje formata na primeru.
int main() { int b=6; int c=8; printf('Value of b is:%d', b); printf(' Value of c is:%d',c); return 0; }
V zgornji kodi natisnemo celoštevilsko vrednost b in c z uporabo specifikatorja %d.
Izhod
int main() { int b=10; int c= -10; printf('Value of b is:%u', b); printf(' Value of c is:%u',c); return 0; }
V zgornjem programu prikazujemo vrednost b in c z uporabo nepredznačenega določitelja formata, tj. %u. Vrednost b je pozitivna, zato specifikator %u natisne točno vrednost b, vendar ne natisne vrednosti c, ker c vsebuje negativno vrednost.
nizi java
Izhod
int main() { int a=0100; printf('Octal value of a is: %o', a); printf(' Integer value of a is: %d',a); return 0; }
V zgornji kodi prikazujemo osmiško vrednost in celo vrednost a.
Izhod
int main() { int y=0xA; printf('Hexadecimal value of y is: %x', y); printf(' Hexadecimal value of y is: %X',y); printf(' Integer value of y is: %d',y); return 0; }
V zgornji kodi y vsebuje šestnajstiško vrednost 'A'. Šestnajstiško vrednost y prikažemo v dveh oblikah. Za tiskanje šestnajstiške vrednosti uporabljamo %x in %X, kjer %x prikazuje vrednost z malimi črkami, tj. 'a', %X pa prikazuje vrednost z veliko začetnico, tj. 'A'.
Izhod
int main() { float y=3.4; printf('Floating point value of y is: %f', y); return 0; }
Zgornja koda natisne plavajočo vrednost y.
Izhod
int main() { float y=3; printf('Exponential value of y is: %e', y); return 0; }
Izhod
int main() { float y=3; printf('Exponential value of y is: %E', y); return 0; }
Izhod
int main() { float y=3.8; printf('Float value of y is: %g', y); return 0; }
V zgornji kodi prikazujemo plavajočo vrednost y z uporabo specifikatorja %g. Specifikator %g prikaže izhod enako kot vhod z enako natančnostjo.
Izhod
int main() { int y=5; printf('Address value of y in hexadecimal form is: %p', &y); return 0; }
Izhod
int main() { char a='c'; printf('Value of a is: %c', a); return 0; }
Izhod
int main() { printf('%s', 'javaTpoint'); return 0; }
Izhod
Specifikator najmanjše širine polja
Recimo, da želimo prikazati izhod, ki zaseda najmanjše število prostorov na zaslonu. To lahko dosežete s prikazom celega števila za znakom za odstotek določitelja oblike.
int main() { int x=900; printf('%8d', x); printf(' %-8d',x); return 0; }
V zgornjem programu specifikator %8d prikaže vrednost po 8 presledkih, medtem ko specifikator %-8d vrednost poravna levo.
Izhod
Zdaj bomo videli, kako zapolniti prazne prostore. Prikazano je v spodnji kodi:
int main() { int x=12; printf('%08d', x); return 0; }
V zgornjem programu %08d pomeni, da je prazen prostor zapolnjen z ničlami.
Izhod
Določanje natančnosti
Natančnost lahko določimo z uporabo '.' Operator (pika), ki mu sledita celo število in specifikator oblike.
int main() { float x=12.2; printf('%.2f', x); return 0; }
Izhod