_cprintf_p, _cprintf_p_l, _cwprintf_p, _cwprintf_p_l_cprintf_p, _cprintf_p_l, _cwprintf_p, _cwprintf_p_l

Formatuje i drukuje do konsoli i obsługuje parametry pozycyjne w ciągu formatu.Formats and prints to the console, and supports positional parameters in the format string.

Ważne

Tego interfejsu API nie można używać w aplikacjach, które są wykonywane w środowisko wykonawcze systemu Windows.This API cannot be used in applications that execute in the Windows Runtime. Aby uzyskać więcej informacji, zobacz funkcje CRT nieobsługiwane w aplikacjach platforma uniwersalna systemu Windows.For more information, see CRT functions not supported in Universal Windows Platform apps.

SkładniaSyntax

int _cprintf_p(
   const char * format [,
   argument] ...
);
int _cprintf_p_l(
   const char * format,
   locale_t locale [,
   argument] ...
);
int _cwprintf_p(
   const wchar * format [,
   argument] ...
);
int _cwprintf_p_l(
   const wchar * format,
   locale_t locale [,
   argument] ...
);

ParametryParameters

Formatowanieformat
Ciąg kontroli formatu.Format-control string.

argumentargument
Parametry opcjonalne.Optional parameters.

localelocale
Ustawienia regionalne do użycia.The locale to use.

Wartość zwracanaReturn Value

Liczba znaków drukowana lub wartość ujemna, jeśli wystąpi błąd.The number of characters printed or a negative value if an error occurs.

UwagiRemarks

Te funkcje formatują i drukują serie znaków i wartości bezpośrednio do konsoli, za pomocą funkcji _putch i _putwch do znaków danych wyjściowych.These functions format and print a series of characters and values directly to the console, using the _putch and _putwch functions to output characters. Każdy argument (jeśli istnieje) jest konwertowany i wyprowadzany zgodnie ze specyfikacją formatu w formacie.Each argument (if any) is converted and output according to the corresponding format specification in format. Format ma taką samą formę i funkcję jak parametr formatu dla funkcji printf_p .The format has the same form and function as the format parameter for the printf_p function. Różnica między _cprintf_p i cprintf_s jest tym, że _cprintf_p obsługuje parametry pozycyjne, które umożliwiają określanie kolejności, w której argumenty są używane w ciągu formatu.The difference between _cprintf_p and cprintf_s is that _cprintf_p supports positional parameters, which allows specifying the order in which the arguments are used in the format string. Aby uzyskać więcej informacji, zobacz Printf_p parametry pozycyjne.For more information, see printf_p Positional Parameters.

W przeciwieństwie do funkcji fprintf_p, printf_p i sprintf_p nie _cprintf_p ani _cwprintf_p nie tłumaczy znaków WYSUWU wiersza na kombinacje wysuwu wiersza (CR-LF) w przypadku danych wyjściowych.Unlike the fprintf_p, printf_p, and sprintf_p functions, neither _cprintf_p nor _cwprintf_p translates line-feed characters into carriage return-line feed (CR-LF) combinations when output. Istotną różnicą jest to, że _cwprintf_p Wyświetla znaki Unicode w przypadku użycia w systemie Windows NT.An important distinction is that _cwprintf_p displays Unicode characters when used in Windows NT. W przeciwieństwie do _cprintf_p, _cwprintf_p używa bieżących ustawień regionalnych konsoli.Unlike _cprintf_p, _cwprintf_p uses the current console locale settings.

Wersje tych funkcji z sufiksem _l są identyczne, z tą różnicą, że korzystają z przekazaną parametrem ustawień regionalnych zamiast bieżących ustawień regionalnych.The versions of these functions with the _l suffix are identical except that they use the locale parameter passed in instead of the current locale.

Ponadto, podobnie jak _cprintf_s i _cwprintf_s, sprawdzają poprawność wskaźnika wprowadzania i ciąg formatu.Also, like _cprintf_s and _cwprintf_s, they validate the input pointer and the format string. Jeśli Format lub argument ma wartość null lub ciąg formatu zawiera nieprawidłowe znaki formatowania, te funkcje wywołują procedurę obsługi nieprawidłowego parametru, zgodnie z opisem w walidacji parametru.If format or argument are NULL, or of the format string contains invalid formatting characters, these functions invoke the invalid parameter handler, as described in Parameter Validation. Jeśli wykonanie może być kontynuowane, te funkcje zwracają wartość-1 i ustawiają errno na EINVAL.If execution is allowed to continue, these functions return -1 and set errno to EINVAL.

Ważne

Upewnij się, że Format nie jest ciągiem zdefiniowanym przez użytkownika.Ensure that format is not a user-defined string.

Począwszy od systemu Windows 10 w wersji 2004 (kompilacja 19041), printf Rodzina funkcji drukuje dokładne, reprezentacja liczb zmiennoprzecinkowych zgodnie z regułami IEEE 754 do zaokrąglania.Starting in Windows 10 version 2004 (build 19041), the printf family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. W poprzednich wersjach systemu Windows, dokładnie zaprezentowane liczby zmiennoprzecinkowe kończące się znakiem "5", zawsze są zaokrąglane w górę.In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 stwierdza, że muszą zaokrąglić do najbliższej parzystej cyfry (znanej również jako "zaokrąglenie w banku").IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). Na przykład obie printf("%1.0f", 1.5) i printf("%1.0f", 2.5) powinny być okrągłe do 2.For example, both printf("%1.0f", 1.5) and printf("%1.0f", 2.5) should round to 2. Wcześniej 1,5 byłyby zaokrąglane do 2 i 2,5, do 3.Previously, 1.5 would round to 2 and 2.5 would round to 3. Ta zmiana ma wpływ tylko na dokładnie zaprezentowane numery.This change only affects exactly representable numbers. Na przykład 2,35 (które, gdy reprezentowane w pamięci, jest bliżej 2.35000000000000008), w dalszym ciągu zaokrągla się do 2,4.For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Zaokrąglanie wykonane przez te funkcje teraz uwzględnia również tryb zaokrąglania zmiennoprzecinkowego ustawiony przez fesetround .Rounding done by these functions now also respects the floating point rounding mode set by fesetround. Wcześniej funkcja zaokrąglania zawsze wybiera FE_TONEAREST zachowanie.Previously, rounding always chose FE_TONEAREST behavior. Ta zmiana dotyczy tylko programów utworzonych przy użyciu programu Visual Studio 2019 w wersji 16,2 lub nowszej.This change only affects programs built using Visual Studio 2019 version 16.2 and later. Aby użyć starszego zachowania zaokrąglania zmiennoprzecinkowego, Połącz z legacy_stdio_float_rounding.obj .To use the legacy floating point rounding behavior, link with legacy_stdio_float_rounding.obj.

Mapowania procedur zwykłego tekstuGeneric-Text Routine Mappings

Procedura tchar.hTchar.h routine _UNICODE i _MBCS niezdefiniowane_UNICODE and _MBCS not defined _MBCS zdefiniowano_MBCS defined _UNICODE zdefiniowano_UNICODE defined
_tcprintf_p_tcprintf_p _cprintf_p_cprintf_p _cprintf_p_cprintf_p _cwprintf_p_cwprintf_p
_tcprintf_p_l_tcprintf_p_l _cprintf_p_l_cprintf_p_l _cprintf_p_l_cprintf_p_l _cwprintf_p_l_cwprintf_p_l

WymaganiaRequirements

ProceduraRoutine Wymagany nagłówekRequired header
_cprintf_p, _cprintf_p_l_cprintf_p, _cprintf_p_l <conio.h>
_cwprintf_p, _cwprintf_p_l_cwprintf_p, _cwprintf_p_l <conio.h>

Aby uzyskać więcej informacji o zgodności, zobacz zgodność.For more compatibility information, see Compatibility.

PrzykładExample

// crt_cprintf_p.c
// This program displays some variables to the console
// using the _cprintf_p function.

#include <conio.h>

int main( void )
{
    int         i = -16,
                h = 29;
    unsigned    u = 62511;
    char        c = 'A';
    char        s[] = "Test";

    // Note that console output does not translate
    // \n as standard output does. Use \r\n instead.
    _cprintf_p( "%2$d  %1$.4x  %3$u  %4$c %5$s\r\n",
                h, i, u, c, s );
}
-16  001d  62511  A Test

Zobacz takżeSee also

We/wy konsoli i portuConsole and Port I/O
_cscanf, _cscanf_l, _cwscanf, _cwscanf_l_cscanf, _cscanf_l, _cwscanf, _cwscanf_l
_cscanf_s, _cscanf_s_l, _cwscanf_s, _cwscanf_s_l_cscanf_s, _cscanf_s_l, _cwscanf_s, _cwscanf_s_l
_fprintf_p, _fprintf_p_l, _fwprintf_p, _fwprintf_p_l_fprintf_p, _fprintf_p_l, _fwprintf_p, _fwprintf_p_l
fprintf_s, _fprintf_s_l, fwprintf_s, _fwprintf_s_lfprintf_s, _fprintf_s_l, fwprintf_s, _fwprintf_s_l
_printf_p, _printf_p_l, _wprintf_p, _wprintf_p_l_printf_p, _printf_p_l, _wprintf_p, _wprintf_p_l
printf_s, _printf_s_l, wprintf_s, _wprintf_s_lprintf_s, _printf_s_l, wprintf_s, _wprintf_s_l
_sprintf_p, _sprintf_p_l, _swprintf_p, _swprintf_p_l_sprintf_p, _sprintf_p_l, _swprintf_p, _swprintf_p_l
_vfprintf_p, _vfprintf_p_l, _vfwprintf_p, _vfwprintf_p_l_vfprintf_p, _vfprintf_p_l, _vfwprintf_p, _vfwprintf_p_l
_cprintf_s, _cprintf_s_l, _cwprintf_s, _cwprintf_s_l_cprintf_s, _cprintf_s_l, _cwprintf_s, _cwprintf_s_l
printf_p parametry pozycyjneprintf_p Positional Parameters
Składnia specyfikacji formatu: funkcje printf i wprintfFormat Specification Syntax: printf and wprintf Functions