_cprintf_p
, , _cprintf_p_l
, , _cwprintf_p
_cwprintf_p_l
Formatuje i drukuje do konsoli oraz obsługuje parametry pozycyjne w ciągu formatu.
Ważne
Tego interfejsu API nie można używać w aplikacjach wykonywanych w środowisko wykonawcze systemu Windows. Aby uzyskać więcej informacji, zobacz Funkcje CRT nieobsługiwane w aplikacjach platforma uniwersalna systemu Windows.
Składnia
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] ...
);
Parametry
format
Ciąg kontroli formatu.
argument
Parametry opcjonalne.
locale
Ustawienia regionalne do użycia.
Wartość zwracana
Liczba znaków wydrukowanych lub ujemnych, jeśli wystąpi błąd.
Uwagi
Te funkcje formatować i drukować serię znaków i wartości bezpośrednio w konsoli przy użyciu _putch
funkcji i _putwch
do znaków wyjściowych. Każda argument
(jeśli istnieje) jest konwertowana i wyjściowa zgodnie z odpowiednią specyfikacją formatu w pliku format
. Format ma ten sam formularz i funkcję co format
parametr funkcji printf_p
. Różnica między elementami _cprintf_p
i cprintf_s
polega na tym, że _cprintf_p
obsługuje parametry pozycyjne, co umożliwia określenie kolejności, w jakiej argumenty są używane w ciągu formatu. Aby uzyskać więcej informacji, zobacz printf_p Parametry pozycyjne.
fprintf_p
W przeciwieństwie do funkcji _cprintf_p
_cwprintf_p
, printf_p
i sprintf_p
nie tłumacz znaków zestawienia wierszy na kombinacje zestawienia powrotu karetki (CR-LF) podczas danych wyjściowych. Ważne rozróżnienie polega na _cwprintf_p
wyświetlaniu znaków Unicode w przypadku użycia w systemie Windows NT. W przeciwieństwie do _cprintf_p
programu _cwprintf_p
używa bieżących ustawień regionalnych konsoli.
Wersje tych funkcji z sufiksem _l
są identyczne, z tą różnicą, że używają parametru ustawień regionalnych przekazanych zamiast bieżących ustawień regionalnych.
Ponadto, podobnie jak _cprintf_s
i _cwprintf_s
, weryfikują wskaźnik wejściowy i ciąg formatu. Jeśli format
ciąg argument
NULL
lub zawiera nieprawidłowe znaki formatowania, te funkcje wywołują nieprawidłową procedurę obsługi parametrów zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonanie może kontynuować, te funkcje zwracają wartość -1 i ustawiają wartość errno
EINVAL
.
Ważne
Upewnij się, że format
nie jest to ciąg zdefiniowany przez użytkownika.
Począwszy od systemu Windows 10 w wersji 2004 (kompilacja 19041), printf
rodzina funkcji drukuje dokładnie możliwe liczby zmiennoprzecinkowe zgodnie z regułami IEEE 754 dotyczącymi zaokrąglania. W poprzednich wersjach systemu Windows dokładnie reprezentowane liczby zmiennoprzecinkowe kończące się na "5" zawsze zaokrągla się w górę. IEEE 754 stwierdza, że muszą zaokrąglić do najbliższej parzysta cyfra (znana również jako "Zaokrąglanie Bankiera"). Na przykład oba printf("%1.0f", 1.5)
printf("%1.0f", 2.5)
elementy i powinny być zaokrąglone do 2. Wcześniej 1,5 zaokrągliłoby się do 2 i 2,5 do 3. Ta zmiana dotyczy tylko dokładnie możliwych do reprezentowania liczb. Na przykład 2,35 (który, gdy jest reprezentowany w pamięci, jest bliżej 2,350000000000000008) nadal zaokrągla się do 2,4. Zaokrąglanie wykonywane przez te funkcje jest teraz również zgodne z trybem zaokrąglania zmiennoprzecinkowego ustawionym przez fesetround
. Wcześniej zaokrąglanie zawsze wybierało FE_TONEAREST
zachowanie. Ta zmiana dotyczy tylko programów utworzonych przy użyciu programu Visual Studio 2019 w wersji 16.2 lub nowszej. Aby użyć starszego zachowania zaokrąglania zmiennoprzecinkowego, połącz się z elementem legacy_stdio_float_rounding.obj
.
Mapowania procedur tekstu ogólnego
Procedura tchar.h | _UNICODE i _MBCS niezdefiniowane |
_MBCS zdefiniowany |
_UNICODE zdefiniowany |
---|---|---|---|
_tcprintf_p |
_cprintf_p |
_cprintf_p |
_cwprintf_p |
_tcprintf_p_l |
_cprintf_p_l |
_cprintf_p_l |
_cwprintf_p_l |
Wymagania
Procedura | Wymagany nagłówek |
---|---|
_cprintf_p , _cprintf_p_l |
<conio.h> |
_cwprintf_p , _cwprintf_p_l |
<conio.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Przykład
// 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 też
We/Wy konsoli i portu
_cscanf
, , _cscanf_l
, , _cwscanf
_cwscanf_l
_cscanf_s
, , _cscanf_s_l
, , _cwscanf_s
_cwscanf_s_l
_fprintf_p
, , _fprintf_p_l
, , _fwprintf_p
_fwprintf_p_l
fprintf_s
, , _fprintf_s_l
, , fwprintf_s
_fwprintf_s_l
_printf_p
, , _printf_p_l
, , _wprintf_p
_wprintf_p_l
printf_s
, , _printf_s_l
, , wprintf_s
_wprintf_s_l
_sprintf_p
, , _sprintf_p_l
, , _swprintf_p
_swprintf_p_l
_vfprintf_p
, , _vfprintf_p_l
, , _vfwprintf_p
_vfwprintf_p_l
_cprintf_s
, , _cprintf_s_l
, , _cwprintf_s
_cwprintf_s_l
printf_p Parametry pozycyjne
Składnia specyfikacji formatu: printf
i wprintf
funkcje