De formaatspecificatie in C wordt gebruikt om de compiler te vertellen welk type gegevens moet worden afgedrukt of gescand bij invoer- en uitvoerbewerkingen. Ze beginnen altijd met een % symbool en worden gebruikt in de geformatteerde string in functies zoals printf(), scanf, sprintf(), etc.
De C-taal biedt een aantal formaatspecificaties die zijn gekoppeld aan de verschillende gegevenstypen, zoals %d voor int, %c voor char, enz. In dit artikel bespreken we enkele veelgebruikte formaatspecificaties en hoe deze te gebruiken.
Lijst met formaatspecificaties in C
De onderstaande tabel bevat de meest gebruikte formaatspecificaties in C
| Formaatspecificatie | Beschrijving |
|---|---|
| %C | Voor tekentype. |
| %D | Voor ondertekend geheel getaltype. |
| %e of %E | Voor wetenschappelijke notatie van drijvers. |
| %F | Voor vlottertype. |
| %g of %G | Voor vlottertype met de huidige precisie. |
| %i | Niet-ondertekend geheel getal |
| %ld of %li | Lang |
| %lf | Dubbele |
| %Lf | Lange dubbele |
| %lu | Niet-ondertekend int of niet-ondertekend lang |
| %lli of %lld | Lang Lang |
| %llu | Niet ondertekend lang lang |
| %O | Octale weergave |
| %P | Wijzer |
| %S | Snaar |
| %in | Niet ondertekend int |
| %x of %X | Hexadecimale weergave |
| %N | Drukt niets af |
| %% | Drukt % teken af |
Voorbeelden van formaatspecificaties in C
1. Tekenformaatspecificatie – %c in C
De %c is de formaatspecificatie voor de verkoold gegevenstype in C-taal. Het kan worden gebruikt voor zowel geformatteerde invoer als geformatteerde uitvoer in C-taal.
Syntaxis:
scanf(' %d ...', ...); printf(' %d ...', ...);> Voorbeeld:
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;> }> |
>
>
Invoer:
Enter some character: A>
Uitgang:
The entered character: A>
2. Opmaakspecificatie voor gehele getallen (ondertekend) – %d in C
We kunnen de ondertekende integer-formaatspecificatie gebruiken %D in de functies scanf() en print() of andere functies die een opgemaakte tekenreeks gebruiken voor invoer en uitvoer van int data type.
Syntaxis:
scanf('%d...', ...); printf('%i...', ...);> Voorbeeld:
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;> }> |
>
>
Invoer:
Enter the integer: 45>
Uitgang:
Printed using %d: 45 Printed using %i: 45>
3. Formaatspecificatie voor niet-ondertekende gehele getallen – %u in C
De %u is de formaatspecificatie voor het niet-ondertekende gehele gegevenstype. Als we een negatief geheel getal opgeven voor de %u, wordt het gehele getal geconverteerd naar zijn eerste complement.
Syntaxis:
printf(' %u ...', ...); scanf(' %u ...', ...);> Voorbeeld: Het volgende C-programma laat zien hoe u %u in C kunt gebruiken.
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;> }> |
>
>
Invoer:
Enter an integer: 25>
Uitgang:
Entered unsigned integer: 25 Printing -10 using %u: 4294967286>
4. Formaatspecificatie met drijvende komma – %f in C
De %F is de drijvende-komma-formaatspecificatie in C-taal die kan worden gebruikt binnen de opgemaakte tekenreeks voor invoer en uitvoer van vlot data type. Afgezien van %f kunnen we gebruiken %Het is of %EN formaatspecificaties om het bestand af te drukken drijvende-kommawaarde in de exponentiële vorm.
Syntaxis:
printf(' %f ...', ...); scanf(' %e ...', ...); printf(' %E ...', ...);> Voorbeeld:
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;> }> |
>
>Uitvoer
Using %f: 12.670000 Using %e: 1.267000e+01 Using %E, 1.267000E+01>
5. Octaal getal zonder teken voor geheel getal – %o in C
We kunnen de %o-formaatspecificatie in het C-programma gebruiken om het niet-ondertekende octale gehele getal af te drukken of in te voeren.
Syntaxis:
printf(' %o ...', ...); scanf(' %o ...', ...);> Voorbeeld:
C
#include> int> main()> {> >int> a = 67;> >printf>(>'%o
'>, a);> >return> 0;> }> |
>
>Uitvoer
103>
6. Hexadecimaal zonder teken voor geheel getal – %x in C
De %x-formaatspecificatie wordt gebruikt in de opgemaakte tekenreeks voor hexadecimale gehele getallen. In dit geval zijn de alfabetten in de hexadecimale cijfers in kleine letters. Voor hoofdletters gebruiken we in plaats daarvan %X.
Syntaxis:
printf(' %x ...', ...); scanf(' %X ...', ...);> Voorbeeld:
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;> }> |
>
>Uitvoer
3c5e 3C5E>
7. Tekenreeksformaatspecificatie – %s in C
De %s in C wordt gebruikt om strings af te drukken of strings als invoer te nemen.
Syntaxis:
printf(' %s ...', ...); scanf(' %s ...', ...);> Voorbeeld:
C
// C program to illustrate the use of %s in C> #include> int> main()> {> >char> a[] =>'Hi Geeks'>;> >printf>(>'%s
'>, a);> >return> 0;> }> |
>
>Uitvoer
Hi Geeks>
Voorbeeld: De werking van %s met scanf() is een beetje anders dan die met printf(). Laten we dit begrijpen met behulp van het volgende C-programma.
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;> }> |
>
>
Invoer
Enter the string: Hi Geeks>
Uitvoer
Hi>
Zoals we kunnen zien, wordt de string alleen gescand totdat er een witruimte wordt aangetroffen. Dat kunnen we voorkomen door gebruik te maken van scansets in C .
json-formaat voorbeeld
8. Adresformaatspecificatie – %p in C
De C-taal biedt ook de formaatspecificatie om het adres/aanwijzers af te drukken. We kunnen %p gebruiken om adressen en verwijzingen in C af te drukken
Syntaxis
printf(' %p ...', ...);> Voorbeeld:
C
#include> int> main()> {> >int> a = 10;> >printf>(>'The Memory Address of a: %p
'>,(>void>*)&a);> >return> 0;> }> |
>
>Uitvoer
The Memory Address of a: 0x7ffe9645b3fc>
Invoer- en uitvoeropmaak
C-taal biedt een aantal hulpmiddelen waarmee we de invoer en uitvoer kunnen formatteren. Ze worden doorgaans tussen het %-teken en het formaatspecificatiesymbool ingevoegd. Sommige daarvan zijn als volgt:
- Een minteken (-) geeft de uitlijning naar links aan.
- Een nummer erna % specificeert de minimale veldbreedte die moet worden afgedrukt als de tekens kleiner zijn dan de breedte van de resterende ruimte. Als deze groter is, wordt deze afgedrukt zoals deze is, zonder afkapping.
- Een punt( . )-symbool scheidt de veldbreedte nauwkeurig.
Precisie vertelt het minimumaantal cijfers in een geheel getal, het maximumaantal tekens in een tekenreeks en het aantal cijfers na het decimale gedeelte in een zwevende waarde.
Voorbeeld van I/O-formattering
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;> }> |
>
>Uitvoer
geeksforgeeks geeksforgeeks geeks geeks>
Veelgestelde vragen over C-formaatspecificaties
1. Heeft C een formaatspecificatie voor binaire getallen?
Nee, de C-taal biedt geen formaatspecificatie voor binaire getallen.
2. Wat is de opgemaakte string?
De invoer- en uitvoerfuncties in C nemen een string als argument dat bepaalt hoe de gegevens op het scherm worden weergegeven of hoe de gegevens in het geheugen worden opgehaald. Deze string wordt de geformatteerde string genoemd.