Udostępnij za pośrednictwem


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ń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

printf_p parametry pozycyjne

Flaga dyrektyw

printf specyfikacji szerokość

Specyfikacja stacji roboczej Precision

Specyfikacja rozmiar

printf wpisz znaki pola