Specyfikator formatu jest ciągiem używanym w sformatowanych funkcjach wejściowych i wyjściowych. Ciąg formatujący określa format danych wejściowych i wyjściowych. Ciąg formatujący zawsze zaczyna się od znaku „%”.
Powszechnie używane specyfikatory formatu w funkcji printf() to:
| Specyfikator formatu | Opis |
|---|---|
| %d lub %i | Służy do drukowania wartości całkowitej ze znakiem, gdzie liczba całkowita ze znakiem oznacza, że zmienna może przyjmować zarówno wartości dodatnie, jak i ujemne. |
| %W | Służy do drukowania wartości całkowitej bez znaku, gdzie liczba całkowita bez znaku oznacza, że zmienna może przechowywać tylko wartość dodatnią. |
| %O | Służy do drukowania ósemkowej liczby całkowitej bez znaku, gdzie wartość ósemkowa liczba całkowita zawsze zaczyna się od wartości 0. |
| %X | Służy do drukowania szesnastkowej liczby całkowitej bez znaku, gdzie szesnastkowa wartość całkowita zawsze zaczyna się od wartości 0x. W tym przypadku znaki alfabetu są drukowane małymi literami, takimi jak a, b, c itp. |
| %X | Służy do drukowania szesnastkowej liczby całkowitej bez znaku, ale %X drukuje wielkie litery alfabetu, takie jak A, B, C itd. |
| %F | Służy do drukowania dziesiętnych wartości zmiennoprzecinkowych. Domyślnie drukuje 6 wartości po „.”. |
| %i i | Służy do notacji naukowej. Jest również znany jako mantysa lub wykładnik. |
| %G | Służy do drukowania dziesiętnych wartości zmiennoprzecinkowych i wykorzystuje stałą precyzję, tj. wartość po przecinku na wejściu będzie dokładnie taka sama, jak wartość na wyjściu. |
| %P | Służy do drukowania adresu w postaci szesnastkowej. |
| %C | Służy do drukowania znaku bez znaku. |
| %S | Służy do drukowania ciągów znaków. |
| %ld | Służy do drukowania wartości całkowitej z długim znakiem. |
Przyjrzyjmy się szczegółowo specyfikatorom formatu na przykładzie.
int main() { int b=6; int c=8; printf('Value of b is:%d', b); printf('
Value of c is:%d',c); return 0; } W powyższym kodzie drukujemy wartości całkowite b i c, używając specyfikatora %d.
Wyjście
int main() { int b=10; int c= -10; printf('Value of b is:%u', b); printf('
Value of c is:%u',c); return 0; } W powyższym programie wyświetlamy wartości b i c przy użyciu specyfikatora formatu bez znaku, tj. %u. Wartość b jest dodatnia, więc specyfikator %u wypisuje dokładną wartość b, ale nie wyświetla wartości c, ponieważ c zawiera wartość ujemną.
Wyjście
int main() { int a=0100; printf('Octal value of a is: %o', a); printf('
Integer value of a is: %d',a); return 0; } W powyższym kodzie wyświetlamy wartość ósemkową i całkowitą wartości a.
Wyjście
int main() { int y=0xA; printf('Hexadecimal value of y is: %x', y); printf('
Hexadecimal value of y is: %X',y); printf('
Integer value of y is: %d',y); return 0; } W powyższym kodzie y zawiera wartość szesnastkową „A”. Wartość szesnastkową y wyświetlamy w dwóch formatach. Używamy %x i %X do wydrukowania wartości szesnastkowej, gdzie %x wyświetla wartość małymi literami, tj. „a”, a %X wyświetla wartość wielką literą, tj. „A”.
Wyjście
int main() { float y=3.4; printf('Floating point value of y is: %f', y); return 0; } Powyższy kod wypisuje zmienną wartość y.
Wyjście
int main() { float y=3; printf('Exponential value of y is: %e', y); return 0; } Wyjście
posortowana krotka Pythona
int main() { float y=3; printf('Exponential value of y is: %E', y); return 0; } Wyjście
int main() { float y=3.8; printf('Float value of y is: %g', y); return 0; } W powyższym kodzie wyświetlamy zmienną wartość y za pomocą specyfikatora %g. Specyfikator %g wyświetla dane wyjściowe takie same jak dane wejściowe, z tą samą precyzją.
Wyjście
int main() { int y=5; printf('Address value of y in hexadecimal form is: %p', &y); return 0; } Wyjście
int main() { char a='c'; printf('Value of a is: %c', a); return 0; } Wyjście
int main() { printf('%s', 'javaTpoint'); return 0; } Wyjście
Specyfikator minimalnej szerokości pola
Załóżmy, że chcemy wyświetlić wynik zajmujący minimalną liczbę miejsc na ekranie. Można to osiągnąć, wyświetlając liczbę całkowitą po znaku procentu specyfikatora formatu.
int main() { int x=900; printf('%8d', x); printf('
%-8d',x); return 0; } W powyższym programie specyfikator %8d wyświetla wartość po 8 spacjach, podczas gdy specyfikator %-8d powoduje, że wartość jest wyrównana do lewej.
Wyjście
Teraz zobaczymy, jak wypełnić puste przestrzenie. Pokazano to w poniższym kodzie:
int main() { int x=12; printf('%08d', x); return 0; } W powyższym programie %08d oznacza, że puste miejsce jest wypełnione zerami.
Wyjście
witaj, świecie
Określanie precyzji
Dokładność możemy określić za pomocą '.' operator (kropki), po którym następuje liczba całkowita i specyfikator formatu.
int main() { float x=12.2; printf('%.2f', x); return 0; } Wyjście