vfprintf_s
, _vfprintf_s_l
, , vfwprintf_s
_vfwprintf_s_l
Zapíše formátovaný výstup pomocí ukazatele na seznam argumentů. Tyto funkce jsou verze vfprintf
, _vfprintf_l
, vfwprintf
_vfwprintf_l
s vylepšeními zabezpečení, jak je popsáno v funkcích zabezpečení v CRT.
Syntaxe
int vfprintf_s(
FILE *stream,
const char *format,
va_list argptr
);
int _vfprintf_s_l(
FILE *stream,
const char *format,
_locale_t locale,
va_list argptr
);
int vfwprintf_s(
FILE *stream,
const wchar_t *format,
va_list argptr
);
int _vfwprintf_s_l(
FILE *stream,
const wchar_t *format,
_locale_t locale,
va_list argptr
);
Parametry
stream
Ukazatel na FILE
strukturu.
format
Specifikace formátu
argptr
Ukazatel na seznam argumentů
locale
Národní prostředí, které se má použít
Další informace naleznete v tématu Syntaxe specifikace formátu.
Vrácená hodnota
vfprintf_s
a vfwprintf_s
vrátí počet zapsaných znaků, které neobsahují ukončující znak null nebo zápornou hodnotu, pokud dojde k výstupní chybě. Pokud je nebo stream
format
je ukazatel null nebo pokud formátovací řetězec obsahuje neplatné znaky formátování, vyvolá se neplatná obslužná rutina parametru, jak je popsáno v ověření parametru. Pokud je možné pokračovat spuštěním, funkce vrátí hodnotu -1 a nastaví errno
se na EINVAL
hodnotu .
Informace o těchto a dalších kódech chyb naleznete v tématu , , , a_sys_nerr
. _sys_errlist
_doserrno
errno
Poznámky
Každá z těchto funkcí přebírá ukazatel na seznam argumentů, pak formátuje a zapisuje daná data do stream
.
Tyto funkce se liší od nezabezpečených verzí pouze v tom, že zabezpečené verze kontrolují, že format
řetězec obsahuje platné formátovací znaky.
vfwprintf_s
je širokoznačná verze vfprintf_s
; dvě funkce se chovají stejně, pokud je datový proud otevřen v režimu ANSI. vfprintf_s
v současné době nepodporuje výstup do datového proudu UNICODE.
Verze těchto funkcí s příponou _l
jsou shodné s tím rozdílem, že používají parametr národního prostředí předaný místo aktuálního národního prostředí vlákna.
Důležité
Ujistěte se, že format
není uživatelem definovaný řetězec. Další informace najdete v tématu Zabránění přetečení vyrovnávací paměti.
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.
Mapování rutin obecného textu
Rutina TCHAR.H | _UNICODE a _MBCS není definován |
_MBCS definovaný |
_UNICODE definovaný |
---|---|---|---|
_vftprintf_s |
vfprintf_s |
vfprintf_s |
vfwprintf_s |
_vftprintf_s_l |
_vfprintf_s_l |
_vfprintf_s_l |
_vfwprintf_s_l |
Požadavky
Rutina | Požadovaný hlavičkový soubor | Volitelná záhlaví |
---|---|---|
vfprintf_s , _vfprintf_s_l |
<stdio.h> a <stdarg.h> | <varargs.h>* |
vfwprintf_s , _vfwprintf_s_l |
<stdio.h> nebo <wchar.h> a <stdarg.h> | <varargs.h>* |
* Požadováno pro kompatibilitu se systémem UNIX V.
Další informace o kompatibilitě najdete v tématu Kompatibilita.
Viz také
Vstupně-výstupní operace streamu
vprintf
– funkce
fprintf
, _fprintf_l
, , fwprintf
_fwprintf_l
printf
, _printf_l
, , wprintf
_wprintf_l
sprintf
, _sprintf_l
, swprintf
, , _swprintf_l
__swprintf_l
va_arg
, va_copy
, , va_end
va_start