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ă:
- Un semn minus (-) indică alinierea la stânga.
- 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.
- 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.