Udostępnij za pośrednictwem


_cprintf, _cprintf_l, _cwprintf, _cwprintf_l

Formatuje i drukuje w konsoli programu . Dostępne są bardziej bezpieczne wersje; zobacz _cprintf_s, , _cwprintf_s_cprintf_s_l, , _cwprintf_s_l.

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(
   const char * format [, argument_list]
);
int _cprintf_l(
   const char * format,
   _locale_t locale [, argument_list]
);
int _cwprintf(
   const wchar * format [, argument_list]
);
int _cwprintf_l(
   const wchar * format,
   _locale_t locale [, argument_list]
);

Parametry

format
Ciąg kontroli formatu.

argument_list
Parametry opcjonalne dla ciągu formatu.

locale
Ustawienia regionalne do użycia.

Wartość zwracana

Liczba drukowanych znaków.

Uwagi

Te funkcje formatować i drukować serię znaków i wartości bezpośrednio w konsoli przy użyciu _putch funkcji (_putwch for _cwprintf) do znaków wyjściowych. Każdy argument w pliku argument_list (jeśli istnieje) jest konwertowany i wyjściowy zgodnie z odpowiednią specyfikacją formatu w pliku format. Argument format używa składni specyfikacji formatu dla funkcji printf i wprintf. fprintfW przeciwieństwie do funkcji _cprintf_cwprintf , printfi sprintf 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 wyświetlaniu znaków Unicode w przypadku użycia w systemie Windows. W przeciwieństwie do _cprintfprogramu _cwprintf 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.

_cprintf sprawdza poprawność parametru format . Jeśli format jest wskaźnikiem o wartości null, funkcja wywołuje nieprawidłową procedurę obsługi parametrów zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonywanie jest dozwolone do kontynuowania, funkcja zwraca wartość -1 i ustawia wartość errnoEINVAL.

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 Zdefiniowane _UNICODE Zdefiniowane
_tcprintf _cprintf _cprintf _cwprintf
_tcprintf_l _cprintf_l _cprintf_l _cwprintf_l

Wymagania

Procedura Wymagany nagłówek
_cprintf, _cprintf_l <conio.h>
_cwprintf, _cwprintf_l <conio.h>

Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.

Przykład

// crt_cprintf.c
// compile with: /c
// This program displays some variables to the console.

#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( "%d  %.4x  %u  %c %s\r\n", i, h, u, c, s );
}
-16  001d  62511  A Test

Zobacz też

We/Wy konsoli i portu
_cscanf, _cscanf_l, _cwscanf, _cwscanf_l
fprintf, _fprintf_l, fwprintf, _fwprintf_l
printf, _printf_l, wprintf, _wprintf_l
sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l
vfprintf, _vfprintf_l, vfwprintf, _vfwprintf_l
_cprintf_s, _cprintf_s_l, _cwprintf_s, _cwprintf_s_l
_cprintf_p, _cprintf_p_l, _cwprintf_p, _cwprintf_p_l
Składnia specyfikacji formatu: printf i wprintf funkcje