Sdílet prostřednictvím


_cprintf_p, _cprintf_p_l, _cwprintf_p, _cwprintf_p_l

Formátuje a tiskne do konzoly a podporuje poziční parametry v řetězci formátu.

Důležité

Toto rozhraní API nelze použít v aplikacích, které se spouští v prostředí Windows Runtime. Další informace najdete v tématu Funkce CRT, které nejsou v aplikacích Univerzální platforma Windows podporované.

Syntaxe

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
Řetězec řízení formátu

argument
Volitelné parametry.

locale
Národní prostředí, které se má použít

Vrácená hodnota

Počet vytištěných znaků nebo záporná hodnota, pokud dojde k chybě.

Poznámky

Tyto funkce formátují a tisknou řadu znaků a hodnot přímo do konzoly, pomocí _putch funkcí a _putwch výstupních znaků. Každý argument (pokud existuje) je převeden a výstup podle odpovídající specifikace formátu v format. Formát má stejný formulář a funkci jako format parametr funkce printf_p . Rozdíl mezi _cprintf_p a cprintf_s je, že _cprintf_p podporuje poziční parametry, což umožňuje určit pořadí, ve kterém jsou argumenty použity ve formátovacím řetězci. Další informace najdete v tématu printf_p poziční parametry.

fprintf_pNa rozdíl od znaků , printf_pa sprintf_p funkcí _cprintf_p a _cwprintf_p nepřekládat znaky odřádkování do kombinace návratového řádku řádku (CR-LF) při výstupu. Důležitým rozdílem je, že _cwprintf_p se při použití v systém Windows NT zobrazují znaky Unicode. Na rozdíl od _cprintf_paktuálního _cwprintf_p nastavení národního prostředí konzoly.

Verze těchto funkcí s příponou _l jsou shodné s tím rozdílem, že místo aktuálního národního prostředí používají předaný parametr národního prostředí.

Podobně jako _cprintf_s a _cwprintf_staké ověřují vstupní ukazatel a formátovací řetězec. Pokud format nebo jsou nebo argument jsou NULLnebo formátovací řetězec obsahují neplatné znaky formátování, tyto funkce vyvolat neplatnou obslužnou rutinu parametru, jak je popsáno v ověření parametru. Pokud je povolené provádění pokračovat, vrátí tyto funkce hodnotu -1 a nastaví errno se na EINVALhodnotu .

Důležité

Ujistěte se, že format není uživatelem definovaný řetězec.

Počínaje Windows 10 verze 2004 (build 19041) printf vytiskne řada funkcí přesně reprezentovatelná čísla s plovoucí desetinnou čárkou podle pravidel IEEE 754 pro zaokrouhlování. V předchozích verzích Windows by se vždy zaokrouhlila přesně reprezentovatelná čísla s plovoucí desetinnou čárkou končící na 5. IEEE 754 uvádí, že musí zaokrouhlit na nejbližší sudou číslici (označované také jako "Zaokrouhlování bankera"). Například obě printf("%1.0f", 1.5) a printf("%1.0f", 2.5) měly by se zaokrouhlit na 2. Dříve by se 1,5 zaokrouhlo na 2 a 2,5 by se zaokrouhlilo na 3. Tato změna má vliv jenom na přesně reprezentovatelná čísla. Například hodnota 2,35 (která je při znázornění v paměti blíže 2,350000000000008) pokračuje zaokrouhlit nahoru na 2,4. Zaokrouhlování provedené těmito funkcemi nyní respektuje také režim zaokrouhlování s plovoucí desetinou čárkou nastavený .fesetround Dříve bylo zaokrouhlení vždy zvoleno FE_TONEAREST chování. Tato změna má vliv jenom na programy vytvořené pomocí sady Visual Studio 2019 verze 16.2 a novější. Chcete-li použít starší chování zaokrouhlování s plovoucí desetinou čárkou, propojte s legacy_stdio_float_rounding.obj.

Mapování rutin obecného textu

Rutina Tchar.h _UNICODE a _MBCS není definován _MBCS Definovány _UNICODE Definovány
_tcprintf_p _cprintf_p _cprintf_p _cwprintf_p
_tcprintf_p_l _cprintf_p_l _cprintf_p_l _cwprintf_p_l

Požadavky

Rutina Požadovaný hlavičkový soubor
_cprintf_p, _cprintf_p_l <conio.h>
_cwprintf_p, _cwprintf_p_l <conio.h>

Další informace o kompatibilitě najdete v tématu Kompatibilita.

Příklad

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

Viz také

Vstupně-výstupní operace konzoly a 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 – poziční parametry
Syntaxe specifikace formátu: printf a wprintf funkce