Sdílet prostřednictvím


_cprintf_s, _cprintf_s_l, _cwprintf_s, _cwprintf_s_l

Formátuje a tiskne do konzoly. Tyto verze _cprintf, , _cprintf_l_cwprintf_l_cwprintfmají vylepšení zabezpečení, jak je popsáno v funkcích zabezpečení v CRT.

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_s(
   const char * format [,
   argument] ...
);
int _cprintf_s_l(
   const char * format,
   _locale_t locale [,
   argument] ...
);
int _cwprintf_s(
   const wchar * format [,
   argument] ...
);
int _cwprintf_s_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 tištěných znaků.

Poznámky

Tyto funkce formátují a tisknou řadu znaků a hodnot přímo do konzoly pomocí _putch funkce (_putwch for _cwprintf_s) pro výstupní znaky. 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_s . fprintf_sNa rozdíl od znaků , printf_sa sprintf_s funkcí _cprintf_s a _cwprintf_s 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_s se při použití v systém Windows NT zobrazují znaky Unicode. Na rozdíl od _cprintf_saktuálního _cwprintf_s národního prostředí konzoly používá aktuální národní 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í.

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ší. Pokud chcete použít starší chování zaokrouhlení s plovoucí desetinou čárkou, použijte odkaz na "legacy_stdio_float_rounding.obj".

Podobně jako nezabezpečované verze (viz _cprintf, _cprintf_l_cwprintf, , _cwprintf_l), tyto funkce ověřují své parametry a vyvolávají neplatnou obslužnou rutinu parametrů, jak je popsáno v ověření parametru, pokud format je ukazatel null. Tyto funkce se liší od nezabezpečených verzí v tom, že samotný formátovací řetězec je také ověřen. Pokud existují nějaké neznámé nebo špatně vytvořené specifikátory formátování, tyto funkce vyvolat neplatnou obslužnou rutinu parametru. Ve všech případech může provádění pokračovat, funkce vrátí hodnotu -1 a nastaví errno se na EINVALhodnotu .

Mapování rutin obecného textu

Rutina Tchar.h _UNICODE a _MBCS není definován _MBCS Definovány _UNICODE Definovány
_tcprintf_s _cprintf_s _cprintf_s _cwprintf_s
_tcprintf_s_l _cprintf_s_l _cprintf_s_l _cwprintf_s_l

Požadavky

Rutina Požadovaný hlavičkový soubor
_cprintf_s, _cprintf_s_l <conio.h>
_cwprintf_s, _cwprintf_s_l <conio.h>

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

Knihovny

Všechny verze knihoven runtime jazyka C.

Příklad

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

Viz také

Vstupně-výstupní operace konzoly a portu
_cscanf, _cscanf_l, _cwscanf, _cwscanf_l
fprintf_s, _fprintf_s_l, fwprintf_s, _fwprintf_s_l
printf_s, _printf_s_l, wprintf_s, _wprintf_s_l
sprintf_s, _sprintf_s_l, swprintf_s, _swprintf_s_l
vfprintf_s, _vfprintf_s_l, vfwprintf_s, _vfwprintf_s_l
Syntaxe specifikace formátu: printf a wprintf funkce