logo

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




jak duży jest mój monitor
// 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.

zmień nazwę folderu Linux

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


ciąg i podciąg



#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.