_cprintf_s
, _cprintf_s_l
, , _cwprintf_s
_cwprintf_s_l
Formátuje a tiskne do konzoly. Tyto verze _cprintf
, , _cprintf_l
_cwprintf_l
_cwprintf
mají 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_s
Na rozdíl od znaků , printf_s
a 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_s
aktuá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 EINVAL
hodnotu .
Mapování rutin obecného textu
Rutina Tchar.h | _UNICODE a _MBCS není definován |
_MBCS definovaný |
_UNICODE definovaný |
---|---|---|---|
_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