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
una matriu en java
// 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;> }> |
>
propietats àcides
>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.