Especificadors de format en C
L'especificador de format en C s'utilitza per indicar al compilador el tipus de dades que s'han d'imprimir o escanejar en les operacions d'entrada i sortida. Sempre comencen amb a % i s'utilitzen a la cadena formatada en funcions com printf(), scanf, sprintf(), etc.
El llenguatge C proporciona una sèrie d'especificadors de format que s'associen amb els diferents tipus de dades, com ara %d per int, %c per a char, etc. En aquest article, parlarem d'alguns especificadors de format d'ús habitual i com utilitzar-los.
Llista d'especificadors de format a C
La taula següent conté els especificadors de format més utilitzats en C
| Especificador de format | Descripció |
|---|---|
| %c | Per tipus de caràcter. |
| %d | Per al tipus d'enter amb signe. |
| %e o %E | Per a la notació científica de les carrosses. |
| %f | Per tipus flotador. |
| %g o %G | Per al tipus flotant amb la precisió actual. |
| %i | Enter sense signe |
| %ld o %li | Llarg |
| %lf | Doble |
| %Lf | Doble llarg |
| %lu | Unsigned int o unsigned long |
| %lli o %lld | Llarg llarg |
| %llu | Molt llarg sense signar |
| %O | Representació octal |
| %p | Apuntador |
| %s | Corda |
| % en | int sense signar |
| %x o %X | Representació hexadecimal |
| %n | No imprimeix res |
| %% | Imprimeix % de caràcters |
Exemples d'especificadors de format en C
1. Especificador de format de caràcters: %c en C
El %c és l'especificador de format per a char tipus de dades en llenguatge C. Es pot utilitzar tant per a l'entrada amb format com per a la sortida amb format en llenguatge C.
Sintaxi:
scanf(' %d ...', ...); printf(' %d ...', ...); Exemple:
C
// C Program to illustrate the %c format specifier.> #include> int> main()> {> > char> c;> > // using %c for character input> > scanf> (> 'Enter some character: %c'> , &c);> > // using %c for character output> > printf> (> 'The entered character: %c'> , &c);> > return> 0;> }> |
Entrada:
Enter some character: A
Sortida:
The entered character: A
2. Especificador de format d'enter (signat) – %d en C
Podem utilitzar l'especificador de format d'enter signat %d a les funcions scanf() i print() o altres funcions que utilitzen una cadena formatada per a l'entrada i sortida de int tipus de dades.
Sintaxi:
scanf('%d...', ...); printf('%i...', ...); Exemple:
C
// C Program to demonstrate the use of %d and %i> #include> // Driver code> int> main()> {> > int> x;> > // taking integer input> > scanf> (> 'Enter the two integers: %d'> , &x);> > // printing integer output> > printf> (> 'Printed using %%d: %d
'> , x);> > printf> (> 'Printed using %%i: %3i
'> , x);> > return> 0;> }> |
Entrada:
Enter the integer: 45
Sortida:
Printed using %d: 45 Printed using %i: 45
3. Especificador de format d'enter sense signe: %u en C
El %u és l'especificador de format per al tipus de dades enter sense signe. Si especifiquem un valor enter negatiu a la %u, aquest converteix l'enter en el seu primer complement.
Sintaxi:
printf(' %u ...', ...); scanf(' %u ...', ...); Exemple: El següent programa C demostra com utilitzar %u en C.
C
// C Program to illustrate the how to use %u> #include> // driver code> int> main()> {> > unsigned> int> var;> > scanf> (> 'Enter an integer: %u'> , &var);> > printf> (> 'Entered Unsigned Integer: %u'> , var);> > // trying to print negative value using %u> > printf> (> 'Printing -10 using %%u: %u
'> , -10);> > return> 0;> }> |
Entrada:
Enter an integer: 25
Sortida:
Entered unsigned integer: 25 Printing -10 using %u: 4294967286
4. Especificador de format de coma flotant: %f en C
El %f és l'especificador de format de coma flotant en llenguatge C que es pot utilitzar dins de la cadena formatada per a l'entrada i sortida de flotar tipus de dades. A part de %f, podem utilitzar %És o % I especificadors de format per imprimir valor de coma flotant en forma exponencial.
Sintaxi:
printf(' %f ...', ...); scanf(' %e ...', ...); printf(' %E ...', ...); Exemple:
C
// C program to demonstrate the use of %f, %e and %E> #include> // driver code> int> main()> {> > float> a = 12.67;> > printf> (> 'Using %%f: %f
'> , a);> > printf> (> 'Using %%e: %e
'> , a);> > printf> (> 'Using %%E, %E'> , a);> > return> 0;> }> |
Sortida
Using %f: 12.670000 Using %e: 1.267000e+01 Using %E, 1.267000E+01
5. Nombre octal sense signe per a nombre enter – %o en C
Podem utilitzar l'especificador de format %o al programa C per imprimir o prendre entrada per al nombre enter octal sense signe.
Sintaxi:
printf(' %o ...', ...); scanf(' %o ...', ...); Exemple:
C
#include> int> main()> {> > int> a = 67;> > printf> (> '%o
'> , a);> > return> 0;> }> |
Sortida
103
6. Hexadecimal sense signe per a nombre enter – %x en C
L'especificador de format %x s'utilitza a la cadena formatada per a nombres enters hexadecimals. En aquest cas, els alfabets dels números hexadecimals estaran en minúscules. Per als dígits de l'alfabet en majúscules, fem servir %X.
Sintaxi:
printf(' %x ...', ...); scanf(' %X ...', ...); Exemple:
C
// C Program to demonstrate the use of %x and %X> #include> int> main()> {> > int> a = 15454;> > printf> (> '%x
'> , a);> > printf> (> '%X'> , a);> > return> 0;> }> |
Sortida
3c5e 3C5E
7. Especificador de format de cadena: %s en C
El %s en C s'utilitza per imprimir cadenes o prendre cadenes com a entrada.
Sintaxi:
printf(' %s ...', ...); scanf(' %s ...', ...); Exemple:
C
// C program to illustrate the use of %s in C> #include> int> main()> {> > char> a[] => 'Hi Geeks'> ;> > printf> (> '%s
'> , a);> > return> 0;> }> |
Sortida
Hi Geeks
Exemple: El funcionament de %s amb scanf() és una mica diferent del que funciona amb printf(). Entenem-ho amb l'ajuda del següent programa C.
C
// C Program to illustrate the working of %s with scanf()> #include> int> main()> {> > char> str[50];> > // taking string as input> > scanf> (> 'Enter the String: %s'> , str);> > printf> (> 'Entered String: %s'> , str);> > return> 0;> }> |
Entrada
Enter the string: Hi Geeks
Sortida
Hi
Com podem veure, la cadena només s'escaneja fins que es troba un espai en blanc. Ho podem evitar utilitzant Scansets en C .
8. Especificador de format d'adreça: %p en C
El llenguatge C també proporciona l'especificador de format per imprimir l'adreça/punters. Podem utilitzar %p per imprimir adreces i punters en C
Sintaxi
printf(' %p ...', ...); Exemple:
C
#include> int> main()> {> > int> a = 10;> > printf> (> 'The Memory Address of a: %p
'> ,(> void> *)&a);> > return> 0;> }> |
Sortida
The Memory Address of a: 0x7ffe9645b3fc
Format d'entrada i sortida
El llenguatge C proporciona algunes eines amb les quals podem formatar l'entrada i la sortida. Generalment s'insereixen entre el signe % i el símbol de l'especificador de format Alguns d'ells són els següents:
- Un signe menys (-) indica l'alineació a l'esquerra.
- Un número després % especifica l'amplada mínima del camp que s'ha d'imprimir si els caràcters són inferiors a la mida de l'amplada, l'espai restant s'omple d'espai i, si és més gran, s'imprimeix tal com està sense truncament.
- Un símbol de punt ( . ) separa l'amplada del camp amb precisió.
La precisió indica el nombre mínim de dígits en un nombre enter, el nombre màxim de caràcters en una cadena i el nombre de dígits després de la part decimal en un valor flotant.
Exemple de format d'E/S
C
// C Program to demonstrate the formatting methods.> #include> int> main()> {> > char> str[] => 'geeksforgeeks'> ;> > printf> (> '%20s
'> , str);> > printf> (> '%-20s
'> , str);> > printf> (> '%20.5s
'> , str);> > printf> (> '%-20.5s
'> , str);> > return> 0;> }> |
Sortida
geeksforgeeks geeksforgeeks geeks geeks
Preguntes freqüents sobre especificadors de format C
1. Té C un especificador de format per als nombres binaris?
No, el llenguatge C no proporciona un especificador de format per als nombres binaris.
2. Quina és la cadena formatada?
Les funcions d'entrada i sortida en C prenen una cadena com a argument que decideix com es mostren les dades a la pantalla o com les dades es recuperen a la memòria. Aquesta cadena s'anomena cadena formatada.