logo

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

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:

  1. Un signe menys (-) indica l'alineació a l'esquerra.
  2. 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.
  3. 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.