Špecifikátory formátu v C
Špecifikátor formátu v C sa používa na informovanie kompilátora o type údajov, ktoré sa majú vytlačiť alebo naskenovať pri vstupných a výstupných operáciách. Vždy začínajú a % a používajú sa vo formátovanom reťazci vo funkciách ako printf(), scanf, sprintf() atď.
Jazyk C poskytuje množstvo špecifikátorov formátu, ktoré sú spojené s rôznymi typmi údajov, ako napríklad %d pre int, %c pre char atď. V tomto článku budeme diskutovať o niektorých bežne používaných špecifikátoroch formátu a o tom, ako ich používať.
Zoznam špecifikátorov formátu v C
Nižšie uvedená tabuľka obsahuje najčastejšie používané špecifikátory formátu v C
| Špecifikátor formátu | Popis |
|---|---|
| %c | Pre typ postavy. |
| %d | Pre typ celého čísla so znamienkom. |
| %e alebo %E | Pre vedecký zápis plavákov. |
| %f | Pre plavákový typ. |
| %g alebo %G | Pre plavákový typ s aktuálnou presnosťou. |
| %i | Celé číslo bez znamienka |
| %ld alebo %li | Dlhé |
| %lf | Dvojité |
| %Lf | Dlhé dvojité |
| %lu | Unsigned int alebo unsigned long |
| %lli alebo %lld | Dlhé dlhé |
| %llu | Dlho nepodpísané |
| %O | Osmičkové znázornenie |
| %p | Ukazovateľ |
| %s | Reťazec |
| %in | Nepodpísaná int |
| %x alebo %X | Hexadecimálne znázornenie |
| %n | Netlačí nič |
| %% | Vytlačí znak % |
Príklady špecifikátorov formátu v C
1. Špecifikátor formátu znakov – %c v C
%c je špecifikátor formátu pre char dátový typ v jazyku C. Dá sa použiť pre formátovaný vstup aj formátovaný výstup v jazyku C.
Syntax:
scanf(' %d ...', ...); printf(' %d ...', ...); Príklad:
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;> }> |
Vstup:
Enter some character: A
Výkon:
The entered character: A
2. Špecifikátor formátu celého čísla (podpísaný) – %d v C
Môžeme použiť špecifikátor formátu celého čísla so znamienkom %d vo funkciách scanf() a print() alebo iných funkciách, ktoré na vstup a výstup používajú formátovaný reťazec int Dátový typ.
Syntax:
scanf('%d...', ...); printf('%i...', ...); Príklad:
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;> }> |
Vstup:
Enter the integer: 45
Výkon:
Printed using %d: 45 Printed using %i: 45
3. Špecifikátor formátu celého čísla bez znamienka – %u v C
%u je špecifikátor formátu pre typ údajov typu celé číslo bez znamienka. Ak do %u zadáme zápornú hodnotu celého čísla, prevedie sa celé číslo na jeho prvý doplnok.
Syntax:
printf(' %u ...', ...); scanf(' %u ...', ...); Príklad: Nasledujúci program C ukazuje, ako používať %u v 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;> }> |
Vstup:
Enter an integer: 25
Výkon:
Entered unsigned integer: 25 Printing -10 using %u: 4294967286
4. Špecifikátor formátu s pohyblivou rádovou čiarkou – %f v C
The %f je špecifikátor formátu s pohyblivou rádovou čiarkou v jazyku C, ktorý možno použiť vo formátovanom reťazci na vstup a výstup plavák Dátový typ. Okrem %f môžeme použiť %To je alebo %A špecifikátory formátu na tlač hodnota s pohyblivou rádovou čiarkou v exponenciálnom tvare.
Syntax:
printf(' %f ...', ...); scanf(' %e ...', ...); printf(' %E ...', ...); Príklad:
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;> }> |
Výkon
Using %f: 12.670000 Using %e: 1.267000e+01 Using %E, 1.267000E+01
5. Osmičkové číslo bez znamienka pre celé číslo – %o v C
Špecifikátor formátu %o v programe C môžeme použiť na tlač alebo vstup pre osmičkové celé číslo bez znamienka.
Syntax:
printf(' %o ...', ...); scanf(' %o ...', ...); Príklad:
C
#include> int> main()> {> > int> a = 67;> > printf> (> '%o
'> , a);> > return> 0;> }> |
Výkon
103
6. Hexadecimálne číslo bez znamienka pre celé číslo – %x v C
Špecifikátor formátu %x sa používa vo formátovanom reťazci pre hexadecimálne celé čísla. V tomto prípade budú abecedy v šestnástkových číslach písané malými písmenami. Pre veľké písmená používame namiesto toho %X.
Syntax:
printf(' %x ...', ...); scanf(' %X ...', ...); Príklad:
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;> }> |
Výkon
3c5e 3C5E
7. Špecifikátor formátu reťazca – %s v C
%s v C sa používa na tlač reťazcov alebo na prevzatie reťazcov ako vstup.
Syntax:
printf(' %s ...', ...); scanf(' %s ...', ...); Príklad:
C
// C program to illustrate the use of %s in C> #include> int> main()> {> > char> a[] => 'Hi Geeks'> ;> > printf> (> '%s
'> , a);> > return> 0;> }> |
Výkon
Hi Geeks
Príklad: Práca %s s scanf() je trochu odlišná od práce s printf(). Pochopme to pomocou nasledujúceho programu 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;> }> |
Vstup
Enter the string: Hi Geeks
Výkon
Hi
Ako vidíme, reťazec sa skenuje iba dovtedy, kým sa neobjaví medzera. Používaním sa tomu môžeme vyhnúť sady skenov v C .
8. Špecifikátor formátu adresy – %p v C
Jazyk C tiež poskytuje špecifikátor formátu na tlač adresy/ukazovateľov. Na tlač adries a ukazovateľov v C môžeme použiť %p
Syntax
printf(' %p ...', ...); Príklad:
C
#include> int> main()> {> > int> a = 10;> > printf> (> 'The Memory Address of a: %p
'> ,(> void> *)&a);> > return> 0;> }> |
Výkon
The Memory Address of a: 0x7ffe9645b3fc
Vstupné a výstupné formátovanie
Jazyk C poskytuje niektoré nástroje, pomocou ktorých môžeme formátovať vstup a výstup. Vo všeobecnosti sa vkladajú medzi znak % a symbol špecifikátora formátu. Niektoré z nich sú nasledovné:
- Znamienko mínus (-) označuje zarovnanie vľavo.
- Číslo potom % určuje minimálnu šírku poľa, ktoré sa má vytlačiť, ak sú znaky menšie ako veľkosť šírky, zostávajúce miesto je vyplnené medzerou a ak je väčšie, vytlačí sa ako bez skrátenia.
- Bodka ( . ) presne oddeľuje šírku poľa.
Presnosť udáva minimálny počet číslic v celom čísle, maximálny počet znakov v reťazci a počet číslic za desatinnou časťou v pohyblivej hodnote.
Príklad formátovania 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;> }> |
Výkon
geeksforgeeks geeksforgeeks geeks geeks
Časté otázky o špecifikátoroch formátu C
1. Má C špecifikátor formátu pre binárne čísla?
Nie, jazyk C neposkytuje špecifikátor formátu pre binárne čísla.
2. Čo je to formátovaný reťazec?
Vstupné a výstupné funkcie v C berú reťazec ako argument, ktorý rozhoduje o tom, ako sa dáta zobrazia na obrazovke alebo ako sa dáta načítajú do pamäte. Tento reťazec sa nazýva formátovaný reťazec.