logo

Formatspecifikationer i C

Formatspecifikationen i C används för att berätta för kompilatorn om vilken typ av data som ska skrivas ut eller skannas i in- och utmatningsoperationer. De börjar alltid med en % symbol och används i den formaterade strängen i funktioner som printf(), scanf, sprintf(), etc.

C-språket tillhandahåller ett antal formatspecifikationer som är associerade med de olika datatyperna som %d för int, %c för char, etc. I den här artikeln kommer vi att diskutera några vanliga formatspecifikatorer och hur man använder dem.

Lista över formatspecifikationer i C

Tabellen nedan innehåller de vanligaste formatspecifikationerna i C



Formatspecifikation

Beskrivning

%c

För teckentyp.

%d

För signerad heltalstyp.

%e eller %E

För vetenskaplig notation av flöten.

%f

För flyttyp.

%g eller %G

För flyttyp med aktuell precision.

%i

Osignerat heltal

%ld eller %li

Lång

%lf

Dubbel

%Lf

Lång dubbel

%lu

Osignerad int eller osignerad lång

%lli eller %lld

Lång lång

%llu

Osignerad lång lång

%O

Oktal representation

%p

Pekare

%s

Sträng

%i

Osignerad int

%x eller %X

Hexadecimal representation

%n

Skriver ingenting

%%

Skriver ut % tecken

Exempel på formatspecifikationer i C

1. Character Format Specifier – %c i C

%c är formatspecifikationen för röding datatyp på C-språk. Den kan användas för både formaterad indata och formaterad utdata i C-språk.

Syntax:

scanf('  %d  ...', ...); printf('  %d  ...', ...);>

Exempel:

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

>

>

Inmatning:

Enter some character: A>

Produktion:

The entered character: A>

2. Heltalsformatspecifikation (signerad) – %d i C

Vi kan använda den signerade heltalsformatsspecifikationen %d i funktionerna scanf() och print() eller andra funktioner som använder formaterad sträng för inmatning och utmatning av int data typ.

Syntax:

scanf('%d...', ...); printf('%i...', ...);>

Exempel:

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

>

>

Inmatning:

Enter the integer: 45>

Produktion:

Printed using %d: 45 Printed using %i: 45>

3. Osignerad heltalsformatspecifikator – %u i C

%u är formatspecifikationen för den osignerade heltalsdatatypen. Om vi ​​anger ett negativt heltalsvärde till %u, konverterar det heltal till dess första komplement.

Syntax:

printf('  %u  ...', ...); scanf('  %u  ...', ...);>

Exempel: Följande C-program visar hur du använder %u i 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;> }>

>

>

Inmatning:

Enter an integer: 25>

Produktion:

Entered unsigned integer: 25 Printing -10 using %u: 4294967286>

4. Flyttalsformatspecifikation – %f i C

De %f är flyttalsformatspecifikationen i C-språket som kan användas inuti den formaterade strängen för inmatning och utmatning av flyta data typ. Förutom %f kan vi använda %Det är eller %OCH formatspecifikationer för att skriva ut flyttalsvärde i exponentiell form.

Syntax:

printf('  %f  ...', ...); scanf('  %e  ...', ...); printf('  %E  ...', ...);>

Exempel:

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

>

>

Produktion

Using %f: 12.670000 Using %e: 1.267000e+01 Using %E, 1.267000E+01>

5. Osignerat oktalt tal för heltal – %o i C

Vi kan använda formatspecifikationen %o i C-programmet för att skriva ut eller ta indata för det oktala heltal utan tecken.

Syntax:

printf('  %o  ...', ...); scanf('  %o  ...', ...);>

Exempel:

C




#include> int> main()> {> >int> a = 67;> >printf>(>'%o '>, a);> >return> 0;> }>

>

>

Produktion

103>

6. Osignerad hexadecimal för heltal – %x i C

Formatspecifikationen %x används i den formaterade strängen för hexadecimala heltal. I det här fallet kommer alfabeten i de hexadecimala talen att vara gemener. För versaler använder vi %X istället.

Syntax:

printf('  %x  ...', ...); scanf('  %X  ...', ...);>

Exempel:

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

>

>

Produktion

3c5e 3C5E>

7. String Format Specifier – %s i C

%s i C används för att skriva ut strängar eller ta strängar som indata.

Syntax:

printf('  %s  ...', ...); scanf('  %s  ...', ...);>

Exempel:

C




// C program to illustrate the use of %s in C> #include> int> main()> {> >char> a[] =>'Hi Geeks'>;> >printf>(>'%s '>, a);> >return> 0;> }>

>

>

Produktion

Hi Geeks>

Exempel: Arbetet med %s med scanf() skiljer sig lite från arbetet med printf(). Låt oss förstå detta med hjälp av följande C-program.

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

>

>

Inmatning

Enter the string: Hi Geeks>

Produktion

Hi>

Som vi kan se, skannas strängen bara tills ett blanksteg påträffas. Det kan vi undvika genom att använda scanset i C .

8. Adressformatspecifikator – %p i C

C-språket tillhandahåller också formatspecifikationen för att skriva ut adressen/pekarna. Vi kan använda %p för att skriva ut adresser och pekare i C

Syntax

printf('  %p  ...', ...);>

Exempel:

C




#include> int> main()> {> >int> a = 10;> >printf>(>'The Memory Address of a: %p '>,(>void>*)&a);> >return> 0;> }>

>

>

Produktion

The Memory Address of a: 0x7ffe9645b3fc>

In- och utformatering

C-språket tillhandahåller några verktyg som vi kan använda för att formatera indata och utdata. De infogas vanligtvis mellan %-tecknet och formatspecifikationssymbolen. Några av dem är följande:

  1. Ett minustecken (-) talar om för vänsterjustering.
  2. Ett nummer efter % anger minsta fältbredd som ska skrivas ut om tecknen är mindre än storleken på bredden, det återstående utrymmet fylls med mellanslag och om det är större skrivs det ut som det är utan trunkering.
  3. En punkt( . ) separerar fältbredden med precision.

Precision talar om det minsta antalet siffror i ett heltal, det maximala antalet tecken i en sträng och antalet siffror efter decimaldelen i ett flytande värde.

Exempel på I/O-formatering

C




java försök fånga
// 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;> }>

>

>

Produktion

 geeksforgeeks geeksforgeeks geeks geeks>

Vanliga frågor om C-formatspecifikationer

1. Har C en formatspecifikation för binära tal?

Nej, C-språket tillhandahåller ingen formatspecifikation för binära tal.

2. Vad är den formaterade strängen?

In- och utgångsfunktionerna i C tar en sträng som ett argument som bestämmer hur data visas på skärmen eller data hämtas till minnet. Denna sträng kallas den formaterade strängen.