logo

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;> }>

>

>

obrázek jako pozadí v css

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í:

  1. Znaménko mínus (-) označuje zarovnání vlevo.
  2. Čí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í.
  3. 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.