Składnia specyfikacji formatu: funkcje printf i wprintf
W tym artykule opisano składnię argumentów ciąg formatu do printf, wprintfi pokrewne funkcje.Bezpieczniejsze wersje te funkcje są dostępne; Aby uzyskać więcej informacji, zobacz Funkcje zabezpieczeń w CRT.Aby uzyskać informacje o poszczególnych funkcjach zobacz dokumentację tych funkcji specjalnych.Aby uzyskać listę tych funkcji, zobacz Strumień we/wy.
Specyfikacja formatu, który składa się z opcjonalnych i wymaganych pól, ma następującą postać:
%flags] width] .precision [{h | l | ll | w | I | I32 | I64}] type
Każde pole, specyfikacja formatu to znak lub numer, który oznacza specyfikatora formatu poszczególnych opcji lub konwersji.Wymagane type znak określa rodzaj konwersji, które mają być stosowane do argumentu.Opcjonalny flags, width, i precision pól kontrolować format dodatkowe aspekty.Specyfikacja podstawowy format zawiera tylko znak procentu i type znaków — na przykład, %s, która określa konwersji ciągów.Jeżeli znak procentu następuje znak, który nie ma znaczenia jako pola format, znak jest kopiowany do wyjścia bez zmian.Aby wydrukować znak procent, użyj %%.
Pola Specyfikacja formatu kontrolować następujące aspekty konwersji argumencie i formatowania:
type
Wymagana konwersja specyfikator znak, który określa, czy związanych z nimi argument jest interpretowana jako znak, ciąg, liczba całkowita lub liczba zmiennoprzecinkowa.Aby uzyskać więcej informacji, zobacz printf wpisz znaki pola.flags
Opcjonalny znak lub znaki sterujące uzasadnienie danych wyjściowych i dane wyjściowe znaki, spacje, zera wiodące, przecinki dziesiętne i prefiksy ósemkowy i wartości szesnastkowe.Aby uzyskać więcej informacji, zobacz Flaga dyrektyw.Więcej niż jedną flagę mogą pojawiać się w specyfikacji formatu, a flagi może występować w dowolnej kolejności.width
Opcjonalna liczba dziesiętna, która określa minimalną liczbę znaków, które są dane wyjściowe.Aby uzyskać więcej informacji, zobacz printf specyfikacji szerokość.precision
Opcjonalna liczba dziesiętna, która określa maksymalną liczbę znaków, które są drukowane za ciągi znaków, liczbę cyfr znaczących liczby cyfr po znaku przecinka dziesiętnego dla wartości zmiennoprzecinkowych lub minimalną liczbę cyfr, które są drukowane dla wartości całkowitych.Aby uzyskać więcej informacji, zobacz "Jak dokładność wartości wpływają na typ w" Specyfikacja stacji roboczej Precision.h | l | ll | w | I | I32 | I64
Opcjonalne prefiksy do type określające rozmiar odpowiednie argumenty.Aby uzyskać więcej informacji, zobacz "Rozmiar prefiksy" w Specyfikacja rozmiar.
Uwaga dotycząca zabezpieczeń |
---|
Upewnij się, że specyfikacji formatu, który ciągi są nie zdefiniowanej przez użytkownika.Rozważmy na przykład program, który wyświetla monit o wprowadzenie nazwy i dane wejściowe są przechowywane w zmiennej typu string o nazwie name.Aby wydrukować name, nie należy tego robić: printf( name ); /* Danger! If name contains "%s", program will crash */ Zamiast tego to: printf( "%s", name ); |
Zobacz też
Informacje
printf, _printf_l, wprintf, _wprintf_l
printf_s, _printf_s_l, wprintf_s, _wprintf_s_l