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