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
// 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.
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
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.