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.