Specifikátory formátu v C
Specifikátor formátu v C se používá k informování kompilátoru o typu dat, která mají být vytištěna nebo naskenována ve vstupních a výstupních operacích. Vždy začínají na a % symbol a používají se ve formátovaném řetězci ve funkcích jako printf(), scanf, sprintf() atd.
Jazyk C poskytuje řadu specifikátorů formátu, které jsou spojeny s různými datovými typy, jako je %d pro int, %c pro char atd. V tomto článku probereme některé běžně používané specifikátory formátu a jak je používat.
Seznam specifikátorů formátu v C
Níže uvedená tabulka obsahuje nejčastěji používané specifikátory formátu v C
| Specifikátor formátu | Popis |
|---|---|
| %C | Pro typ postavy. |
| %d | Pro typ celého čísla se znaménkem. |
| %e nebo %E | Pro vědecký zápis plováků. |
| %F | Pro plovákový typ. |
| %g nebo %G | Pro plovoucí typ s aktuální přesností. |
| %i | Celé číslo bez znaménka |
| %ld nebo %li | Dlouho |
| %lf | Dvojnásobek |
| %Lf | Dlouhá dvojitá |
| %lu | Unsigned int nebo unsigned long |
| %lli nebo %lld | Dlouhé dlouhé |
| %llu | Nesignováno dlouho dlouho |
| %Ó | Osmičková reprezentace |
| %p | Ukazatel |
| %s | Tětiva |
| %v | Nepodepsané int |
| %x nebo %X | Hexadecimální zobrazení |
| %n | Netiskne nic |
| %% | Vytiskne znak % |
Příklady specifikátorů formátu v C
1. Specifikátor formátu znaků – %c v C
%c je specifikátor formátu pro char datový typ v jazyce C. Lze jej použít jak pro formátovaný vstup, tak pro formátovaný výstup v jazyce C.
Syntax:
scanf(' %d ...', ...); printf(' %d ...', ...); Pří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ýstup:
The entered character: A
2. Specifikátor formátu celého čísla (se znaménkem) – %d v C
Můžeme použít specifikátor formátu celého čísla se znaménkem %d ve funkcích scanf() a print() nebo jiných funkcích, které pro vstup a výstup používají formátovaný řetězec int datový typ.
Syntax:
scanf('%d...', ...); printf('%i...', ...); Pří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ýstup:
Printed using %d: 45 Printed using %i: 45
3. Specifikátor formátu celého čísla bez znaménka – %u v C
%u je specifikátor formátu pro datový typ celé číslo bez znaménka. Pokud do %u zadáme zápornou celočíselnou hodnotu, převede celé číslo na svůj první doplněk.
Syntax:
printf(' %u ...', ...); scanf(' %u ...', ...); Příklad: Následující program C ukazuje, jak používat %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ýstup:
Entered unsigned integer: 25 Printing -10 using %u: 4294967286
4. Specifikátor formátu s pohyblivou řádovou čárkou – %f v C
The %F je specifikátor formátu s pohyblivou řádovou čárkou v jazyce C, který lze použít uvnitř formátovaného řetězce pro vstup a výstup plovák datový typ. Kromě %f můžeme použít %To je nebo %A specifikátory formátu pro tisk hodnota s pohyblivou řádovou čárkou v exponenciální podobě.
Syntax:
printf(' %f ...', ...); scanf(' %e ...', ...); printf(' %E ...', ...); Pří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ýstup
Using %f: 12.670000 Using %e: 1.267000e+01 Using %E, 1.267000E+01
5. Osmičkové číslo bez znaménka pro celé číslo – %o v C
Můžeme použít specifikátor formátu %o v programu C pro tisk nebo vstup pro osmičkové celé číslo bez znaménka.
Syntax:
printf(' %o ...', ...); scanf(' %o ...', ...); Příklad:
C
#include> int> main()> {> > int> a = 67;> > printf> (> '%o
'> , a);> > return> 0;> }> |
Výstup
103
6. Hexadecimální číslo bez znaménka pro celé číslo – %x v C
Specifikátor formátu %x se používá ve formátovaném řetězci pro hexadecimální celá čísla. V tomto případě budou abecedy v hexadecimálních číslech psány malými písmeny. Pro velká písmena používáme místo toho %X.
Syntax:
printf(' %x ...', ...); scanf(' %X ...', ...); Pří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ýstup
3c5e 3C5E
7. Specifikátor formátu řetězce – %s v C
%s v C se používá k tisku řetězců nebo k přijímání řetězců jako vstupu.
Syntax:
printf(' %s ...', ...); scanf(' %s ...', ...); Pří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ýstup
Hi Geeks
Příklad: Práce %s se scanf() se trochu liší od práce s printf(). Pojďme to pochopit pomocí následujícího 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ýstup
Hi
Jak vidíme, řetězec je skenován pouze do doby, než se objeví mezera. Tomu se můžeme vyhnout používáním sady skenů v C .
8. Specifikátor formátu adresy – %p v C
Jazyk C také poskytuje specifikátor formátu pro tisk adresy/ukazatelů. Pro tisk adres a ukazatelů v C můžeme použít %p
Syntax
printf(' %p ...', ...); Příklad:
C
#include> int> main()> {> > int> a = 10;> > printf> (> 'The Memory Address of a: %p
'> ,(> void> *)&a);> > return> 0;> }> |
Výstup
The Memory Address of a: 0x7ffe9645b3fc
Vstupní a výstupní formátování
Jazyk C poskytuje některé nástroje, pomocí kterých můžeme formátovat vstup a výstup. Obvykle se vkládají mezi znak % a symbol specifikátoru formátu. Některé z nich jsou následující:
- Znaménko mínus (-) označuje zarovnání vlevo.
- Číslo po něm % určuje minimální šířku pole, která se má vytisknout, pokud jsou znaky menší než velikost šířky, zbývající prostor je vyplněn mezerou a pokud je větší, vytiskne se tak, jak je, bez zkrácení.
- Symbol tečky ( . ) odděluje šířku pole s přesností.
Přesnost udává minimální počet číslic v celém čísle, maximální počet znaků v řetězci a počet číslic za desetinnou částí v plovoucí hodnotě.
Příklad formátování 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ýstup
geeksforgeeks geeksforgeeks geeks geeks
Časté dotazy týkající se specifikátorů formátu C
1. Má C specifikátor formátu pro binární čísla?
Ne, jazyk C neposkytuje specifikátor formátu pro binární čísla.
2. Co je to formátovaný řetězec?
Vstupní a výstupní funkce v C berou řetězec jako argument, který rozhoduje o tom, jak se data zobrazí na obrazovce nebo jak se data načítají do paměti. Tento řetězec se nazývá formátovaný řetězec.