logo

Specificatori de format în C

Specificatorul de format din C este folosit pentru a spune compilatorului despre tipul de date care urmează să fie tipărite sau scanate în operațiunile de intrare și de ieșire. Încep întotdeauna cu a % simbol și sunt utilizate în șirul formatat în funcții precum printf(), scanf, sprintf(), etc.

Limbajul C oferă un număr de specificatori de format care sunt asociați cu diferite tipuri de date, cum ar fi %d pentru int, %c pentru char, etc. În acest articol, vom discuta despre câțiva specificatori de format folosiți în mod obișnuit și despre cum să le folosim.



Lista specificatorilor de format în C

Tabelul de mai jos conține specificatorii de format cei mai des utilizați în C

Specificator de format

Descriere



%c

Pentru tipul de caractere.

%d

Pentru tipul întreg cu semn.

%e sau %E



Pentru notarea științifică a flotoarelor.

%f

Pentru tipul plutitor.

%g sau %G

Pentru tipul flotant cu precizia curentă.

%i

Număr întreg fără semn

%ld sau %li

Lung

%lf

Dubla

%Lf

Dublu lung

%lu

Unsigned int sau unsigned long

%lli sau %lld

Lung lung

%llu

Nesemnat lung lung

%O

Reprezentare octală

%p

Indicator

%s

Şir

%în

Nesemnat int

%x sau %X

Reprezentare hexazecimală

%n

Nu imprimă nimic

%%

Imprimă % caractere

Exemple de specificatori de format în C

1. Specificator de format de caractere – %c în C

%c este specificatorul de format pentru char tip de date în limbaj C. Poate fi folosit atât pentru intrare formatată, cât și pentru ieșire formatată în limbaj C.

Sintaxă:

scanf('  %d  ...', ...); printf('  %d  ...', ...);>

Exemplu:

C




pd merge

// 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;> }>

>

>

Intrare:

Enter some character: A>

Ieșire:

The entered character: A>

2. Indicator de format întreg (semnat) – %d în C

Putem folosi specificatorul de format întreg cu semn %d în funcțiile scanf() și print() sau în alte funcții care folosesc șir formatat pentru intrare și ieșire a int tip de date.

Sintaxă:

scanf('%d...', ...); printf('%i...', ...);>

Exemplu:

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;> }>

>

>

Intrare:

Enter the integer: 45>

Ieșire:

Printed using %d: 45 Printed using %i: 45>

3. Specificator de format întreg fără semn – %u în C

%u este specificatorul de format pentru tipul de date întreg nesemnat. Dacă specificăm o valoare întreagă negativă pentru %u, acesta transformă numărul întreg în primul său complement.

Sintaxă:

printf('  %u  ...', ...); scanf('  %u  ...', ...);>

Exemplu: Următorul program C demonstrează cum se utilizează %u în C.

matrice de structură în limbajul 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;> }>

>

>

Intrare:

Enter an integer: 25>

Ieșire:

Entered unsigned integer: 25 Printing -10 using %u: 4294967286>

4. Specificator de format în virgulă mobilă – %f în C

The %f este specificatorul de format în virgulă mobilă în limbajul C care poate fi utilizat în șirul formatat pentru intrarea și ieșirea pluti tip de date. În afară de %f, putem folosi %Este sau %ȘI specificatorii de format pentru a tipări valoare în virgulă mobilă în formă exponențială.

Sintaxă:

printf('  %f  ...', ...); scanf('  %e  ...', ...); printf('  %E  ...', ...);>

Exemplu:

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;> }>

>

>

Ieșire

Using %f: 12.670000 Using %e: 1.267000e+01 Using %E, 1.267000E+01>

5. Număr octal fără semn pentru întreg – %o în C

Putem folosi specificatorul de format %o în programul C pentru a imprima sau a prelua intrarea pentru numărul întreg octal fără semn.

Sintaxă:

printf('  %o  ...', ...); scanf('  %o  ...', ...);>

Exemplu:

C




#include> int> main()> {> >int> a = 67;> >printf>(>'%o '>, a);> >return> 0;> }>

>

>

Ieșire

103>

6. Hexazecimal fără semn pentru întreg – %x în C

Specificatorul de format %x este utilizat în șirul formatat pentru numerele întregi hexazecimale. În acest caz, alfabetele din numerele hexazecimale vor fi cu litere mici. Pentru cifrele alfabetului majuscule, folosim în schimb %X.

Sintaxă:

printf('  %x  ...', ...); scanf('  %X  ...', ...);>

Exemplu:

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;> }>

>

>

Ieșire

3c5e 3C5E>

7. Specificator format șir – %s în C

%s în C este folosit pentru a imprima șiruri sau pentru a lua șiruri ca intrare.

Sintaxă:

printf('  %s  ...', ...); scanf('  %s  ...', ...);>

Exemplu:

C




// C program to illustrate the use of %s in C> #include> int> main()> {> >char> a[] =>'Hi Geeks'>;> >printf>(>'%s '>, a);> >return> 0;> }>

>

>

Ieșire

Hi Geeks>

Exemplu: Funcționarea lui %s cu scanf() este puțin diferită de lucrul cu printf(). Să înțelegem acest lucru cu ajutorul următorului program 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;> }>

>

>

Intrare

Enter the string: Hi Geeks>

Ieșire

Hi>

După cum putem vedea, șirul este scanat doar până când se întâlnește un spațiu alb. Putem evita asta folosind seturi de scanare în C .

8. Specificator de format de adresă – %p în C

Limbajul C oferă, de asemenea, specificatorul de format pentru a tipări adresa/pointerii. Putem folosi %p pentru a imprima adrese și pointeri în C

conversie șir de caractere în număr întreg

Sintaxă

printf('  %p  ...', ...);>

Exemplu:

C




#include> int> main()> {> >int> a = 10;> >printf>(>'The Memory Address of a: %p '>,(>void>*)&a);> >return> 0;> }>

>

>

Ieșire

The Memory Address of a: 0x7ffe9645b3fc>

Formatare de intrare și ieșire

Limbajul C oferă câteva instrumente prin care putem formata intrarea și ieșirea. Ele sunt în general inserate între semnul % și simbolul specificatorului de format. Unele dintre ele sunt după cum urmează:

  1. Un semn minus (-) indică alinierea la stânga.
  2. Un număr după % specifică lățimea minimă a câmpului de tipărit dacă caracterele sunt mai mici decât dimensiunea lățimii, spațiul rămas este umplut cu spațiu și dacă este mai mare, atunci este tipărit așa cum este, fără trunchiere.
  3. Un simbol punct ( . ) separă lățimea câmpului cu precizie.

Precizia spune numărul minim de cifre dintr-un număr întreg, numărul maxim de caractere dintr-un șir și numărul de cifre după partea zecimală într-o valoare flotantă.

Exemplu de formatare I/O

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;> }>

>

>

Ieșire

 geeksforgeeks geeksforgeeks geeks geeks>

Întrebări frecvente despre specificatorii de format C

1. Are C un specificator de format pentru numere binare?

Nu, limbajul C nu oferă un specificator de format pentru numerele binare.

2. Ce este șirul formatat?

Funcțiile de intrare și de ieșire din C iau un șir ca argument care decide modul în care datele sunt afișate pe ecran sau datele sunt preluate în memorie. Acest șir se numește șir formatat.