Specyfikatory formatu w C

Specyfikator formatu w C służy do informowania kompilatora o typie danych, które mają być wydrukowane lub przeskanowane w operacjach wejścia i wyjścia. Zawsze zaczynają się od a % symbol i są używane w sformatowanym ciągu znaków w funkcjach takich jak printf(), scanf, sprintf() itp.

Język C udostępnia wiele specyfikatorów formatu, które są powiązane z różnymi typami danych, takimi jak %d dla int, %c dla char itp. W tym artykule omówimy niektóre powszechnie używane specyfikatory formatu i sposoby ich używania.

Lista specyfikatorów formatu w C

Poniższa tabela zawiera najczęściej używane specyfikatory formatu w języku C

Specyfikator formatu

Opis

%C

Dla typu znakowego.

%D

Dla typu całkowitego ze znakiem.

%e lub %E

Do naukowego oznaczania pływaków.

%F

Dla typu pływającego.

%g lub %G

Dla typu float z bieżącą precyzją.

%I

Liczba całkowita bez znaku

%ld lub %li

Długi

%lf

Podwójnie

%Lf

Długie podwójne

%lu

Unsigned int lub unsigned long

%lli lub %lld

Długie, długie

%llu

Niepodpisany, długi, długi

%O

Reprezentacja ósemkowa

%P

Wskaźnik

%S

Strunowy

%W

Bez znaku wew

%x lub %X

Reprezentacja szesnastkowa

%N

Nic nie drukuje

%%

Drukuje znak %

Przykłady specyfikatorów formatu w C

1. Specyfikator formatu znaku – %c w C

%c jest specyfikatorem formatu dla zwęglać typ danych w języku C. Można go używać zarówno do sformatowanego wejścia, jak i sformatowanego wyjścia w języku C.

Składnia:

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

Przykład:

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

Wejście:

Enter some character: A 

Wyjście:

The entered character: A 

2. Specyfikator formatu liczby całkowitej (ze znakiem) – %d w C

Możemy użyć specyfikatora formatu liczby całkowitej ze znakiem %D w funkcjach scanf() i print() lub innych funkcjach, które używają sformatowanego ciągu znaków do wejścia i wyjścia wew typ danych.

Składnia:

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

Przykład:

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

Wejście:

Enter the integer: 45 

Wyjście:

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

3. Specyfikator formatu liczby całkowitej bez znaku – %u w C

%u jest specyfikatorem formatu typu danych typu całkowitego bez znaku. Jeśli określimy ujemną wartość całkowitą dla %u, konwertuje ona liczbę całkowitą na jej pierwsze uzupełnienie.

Składnia:

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

Przykład: Poniższy program w C demonstruje, jak używać %u w 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;> }>

Wejście:

Enter an integer: 25 

Wyjście:

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

4. Specyfikator formatu zmiennoprzecinkowego – %f w C

The %F jest specyfikatorem formatu zmiennoprzecinkowego w języku C, którego można używać wewnątrz sformatowanego ciągu znaków na potrzeby wejścia i wyjścia platforma typ danych. Oprócz %f możemy użyć %To jest Lub %I specyfikatory formatu do wydrukowania wartość zmiennoprzecinkowa w postaci wykładniczej.

Składnia:

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

Przykład:

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

Wyjście

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

5. Liczba ósemkowa bez znaku dla liczby całkowitej – %o w C

Możemy użyć specyfikatora formatu %o w programie C, aby wydrukować lub pobrać liczbę całkowitą ósemkową bez znaku.

Składnia:

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

Przykład:

C




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

Wyjście

103 

6. Szesnastkowy znak bez znaku dla liczby całkowitej – %x w C

Specyfikator formatu %x jest używany w sformatowanym ciągu znaków dla szesnastkowych liczb całkowitych. W tym przypadku alfabety w liczbach szesnastkowych będą pisane małymi literami. W przypadku wielkich cyfr alfabetu używamy zamiast tego %X.

Składnia:

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

Przykład:

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

Wyjście

3c5e 3C5E 

7. Specyfikator formatu ciągu znaków – %s w C

%s w C służy do drukowania ciągów znaków lub pobierania ciągów jako danych wejściowych.

Składnia:

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

Przykład:

C




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

Wyjście

Hi Geeks 

Przykład: Działanie %s z funkcją scanf() różni się nieco od pracy z funkcją printf(). Rozumiemy to za pomocą poniższego programu w 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;> }>

Wejście

Enter the string: Hi Geeks 

Wyjście

Hi 

Jak widzimy, ciąg znaków jest skanowany tylko do momentu napotkania białych znaków. Możemy tego uniknąć stosując zestawy skanów w C .

8. Specyfikator formatu adresu – %p w C

Język C udostępnia również specyfikator formatu do drukowania adresu/wskaźników. Możemy użyć %p do wydrukowania adresów i wskaźników w C

Składnia

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

Przykład:

C




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

Wyjście

The Memory Address of a: 0x7ffe9645b3fc 

Formatowanie wejścia i wyjścia

Język C udostępnia pewne narzędzia, za pomocą których możemy formatować dane wejściowe i wyjściowe. Zazwyczaj wstawia się je pomiędzy znakiem % a symbolem specyfikatora formatu. Niektóre z nich są następujące:

  1. Znak minus(-) informuje o wyrównaniu do lewej.
  2. Numer po % określa minimalną szerokość pola, które ma zostać wydrukowane, jeśli znaki są mniejsze niż szerokość, pozostała część jest wypełniana spacją, a jeśli jest większa, jest drukowana w niezmienionej postaci, bez obcięcia.
  3. Symbol kropki ( . ) precyzyjnie oddziela szerokość pola.

Precyzja określa minimalną liczbę cyfr w liczbie całkowitej, maksymalną liczbę znaków w ciągu i liczbę cyfr po części dziesiętnej w wartości zmiennoprzecinkowej.

Przykład formatowania we/wy

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

Wyjście

 geeksforgeeks geeksforgeeks geeks geeks 

Często zadawane pytania dotyczące specyfikatorów formatu C

1. Czy C ma specyfikator formatu liczb binarnych?

Nie, język C nie udostępnia specyfikatora formatu liczb binarnych.

2. Co to jest sformatowany ciąg?

Funkcje wejścia i wyjścia w C przyjmują ciąg znaków jako argument decydujący o sposobie wyświetlania danych na ekranie lub pobierania danych do pamięci. Ten ciąg nazywa się ciągiem sformatowanym.