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