L'especificador de format és una cadena que s'utilitza a les funcions d'entrada i sortida amb format. La cadena de format determina el format d'entrada i sortida. La cadena de format sempre comença amb un caràcter '%'.
Els especificadors de format utilitzats habitualment a la funció printf() són:
Especificador de format | Descripció |
---|---|
%d o %i | S'utilitza per imprimir el valor sencer amb signe, on l'enter amb signe significa que la variable pot contenir tant valors positius com negatius. |
% en | S'utilitza per imprimir el valor sencer sense signe, on l'enter sense signe significa que la variable només pot contenir un valor positiu. |
%O | S'utilitza per imprimir l'enter octal sense signe on el valor d'enter octal sempre comença amb un valor 0. |
%x | S'utilitza per imprimir l'enter hexadecimal sense signe on el valor de l'enter hexadecimal sempre comença amb un valor 0x. En aquest s'imprimeixen caràcters alfabètics en minúscules com a, b, c, etc. |
%X | S'utilitza per imprimir l'enter hexadecimal sense signe, però %X imprimeix els caràcters alfabètics en majúscules com ara A, B, C, etc. |
%f | S'utilitza per imprimir els valors decimals de coma flotant. Per defecte, imprimeix els 6 valors després de '.'. |
%i i | S'utilitza per a la notació científica. També es coneix com a Mantissa o Exponent. |
%g | S'utilitza per imprimir els valors decimals de coma flotant i utilitza la precisió fixa, és a dir, el valor després del decimal a l'entrada seria exactament el mateix que el valor de la sortida. |
%p | S'utilitza per imprimir l'adreça en forma hexadecimal. |
%c | S'utilitza per imprimir el caràcter sense signar. |
%s | S'utilitza per imprimir les cadenes. |
%ld | S'utilitza per imprimir el valor enter de signe llarg. |
Entenem els especificadors de format en detall mitjançant un exemple.
int main() { int b=6; int c=8; printf('Value of b is:%d', b); printf(' Value of c is:%d',c); return 0; }
Al codi anterior, estem imprimint el valor enter de b i c mitjançant l'especificador %d.
Sortida
int main() { int b=10; int c= -10; printf('Value of b is:%u', b); printf(' Value of c is:%u',c); return 0; }
Al programa anterior, estem mostrant el valor de b i c utilitzant un especificador de format sense signe, és a dir, %u. El valor de b és positiu, de manera que l'especificador %u imprimeix el valor exacte de b, però no imprimeix el valor de c ja que c conté el valor negatiu.
Sortida
int main() { int a=0100; printf('Octal value of a is: %o', a); printf(' Integer value of a is: %d',a); return 0; }
Al codi anterior, estem mostrant el valor octal i el valor enter de a.
Sortida
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; }
Al codi anterior, y conté el valor hexadecimal 'A'. Mostrem el valor hexadecimal de y en dos formats. Utilitzem %x i %X per imprimir el valor hexadecimal on %x mostra el valor en lletres minúscules, és a dir, 'a' i %X mostra el valor en majúscula, és a dir, 'A'.
Sortida
int main() { float y=3.4; printf('Floating point value of y is: %f', y); return 0; }
El codi anterior imprimeix el valor flotant de y.
Sortida
int main() { float y=3; printf('Exponential value of y is: %e', y); return 0; }
Sortida
int main() { float y=3; printf('Exponential value of y is: %E', y); return 0; }
Sortida
int main() { float y=3.8; printf('Float value of y is: %g', y); return 0; }
Al codi anterior, estem mostrant el valor flotant de y utilitzant l'especificador %g. L'especificador %g mostra la sortida igual que l'entrada amb la mateixa precisió.
jframe
Sortida
int main() { int y=5; printf('Address value of y in hexadecimal form is: %p', &y); return 0; }
Sortida
int main() { char a='c'; printf('Value of a is: %c', a); return 0; }
Sortida
int main() { printf('%s', 'javaTpoint'); return 0; }
Sortida
Especificador d'amplada de camp mínima
Suposem que volem mostrar una sortida que ocupi un nombre mínim d'espais a la pantalla. Podeu aconseguir-ho mostrant un nombre enter després del signe de percentatge de l'especificador de format.
int main() { int x=900; printf('%8d', x); printf(' %-8d',x); return 0; }
Al programa anterior, l'especificador %8d mostra el valor després de 8 espais mentre que l'especificador %-8d farà un valor alineat a l'esquerra.
Sortida
Ara veurem com omplir els espais buits. Es mostra al codi següent:
int main() { int x=12; printf('%08d', x); return 0; }
Al programa anterior, %08d significa que l'espai buit està ple de zeros.
Sortida
Especificació de precisió
Podem especificar la precisió utilitzant '.' Operador (punt) seguit d'un nombre enter i un especificador de format.
int main() { float x=12.2; printf('%.2f', x); return 0; }
Sortida