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:
- Znak minus(-) informuje o wyrównaniu do lewej.
- 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.
- 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.