vsnprintf, _vsnprintf, _vsnprintf_l, _vsnwprintf, _vsnwprintf_l
Psát formátovaný výstup pomocí ukazatele na seznam argumentů.Bezpečnější verze tyto funkce jsou k dispozici; see vsnprintf_s, _vsnprintf_s, _vsnprintf_s_l, _vsnwprintf_s, _vsnwprintf_s_l.
int vsnprintf(
char *buffer,
size_t count,
const char *format,
va_list argptr
);
int _vsnprintf(
char *buffer,
size_t count,
const char *format,
va_list argptr
);
int _vsnprintf_l(
char *buffer,
size_t count,
const char *format,
locale_t locale,
va_list argptr
);
int _vsnwprintf(
wchar_t *buffer,
size_t count,
const wchar_t *format,
va_list argptr
);
int _vsnwprintf_l(
wchar_t *buffer,
size_t count,
const wchar_t *format,
locale_t locale,
va_list argptr
);
template <size_t size>
int vsnprintf(
char (&buffer)[size],
size_t count,
const char *format,
va_list argptr
); // C++ only
template <size_t size>
int _vsnprintf(
char (&buffer)[size],
size_t count,
const char *format,
va_list argptr
); // C++ only
template <size_t size>
int _vsnprintf_l(
char (&buffer)[size],
size_t count,
const char *format,
locale_t locale,
va_list argptr
); // C++ only
template <size_t size>
int _vsnwprintf(
wchar_t (&buffer)[size],
size_t count,
const wchar_t *format,
va_list argptr
); // C++ only
template <size_t size>
int _vsnwprintf_l(
wchar_t (&buffer)[size],
size_t count,
const wchar_t *format,
locale_t locale,
va_list argptr
); // C++ only
Parametry
buffer
Umístění úložiště pro výstup.count
Maximální počet znaků pro zápis.format
Specifikace formátu.argptr
Ukazatel na seznam argumentů.locale
Národní prostředí použít.
Další informace naleznete v tématu Specifikace formátu.
Vrácená hodnota
vsnprintf,_vsnprintf, a _vsnwprintf vrátí počet znaků, pokud počet znaků pro zápis je menší nebo rovno count; Pokud je větší než počet znaků pro zápis count, tyto funkce vrácení -1 označuje, že byl výstup zkrácen.Vrácená hodnota neobsahuje ukončující null, pokud je zapsán jeden.
Pokud buffer nebo format je NULL, nebo pokud je počet menší než nula, tyto funkce vyvolat popisovač neplatný parametr popsaným v Ověření parametrů.Pokud je povoleno spuštění pokračovat, vrátí tyto funkce hodnotu -1 a errno na EINVAL.
Poznámky
Každá z těchto funkcí má ukazatel na seznam argumentů, pak formáty data a zapíše do count znaků do paměti odkazuje buffer.Pokud je na konci místnosti (Pokud počet znaků pro zápis je menší než count), vyrovnávací paměti bude zakončený hodnotou null.
![]() |
---|
Zajistit, aby format není uživatelem definovaný řetězec.Další informace naleznete v tématu Vyhnout způsobí přetečení vyrovnávací paměti. |
[!POZNÁMKA]
Chcete-li zajistit, že je prostor pro ukončující null, ujistěte se, zda count je přísně menší než délka vyrovnávací paměti a inicializace vyrovnávací paměti na hodnotu null před do volání funkce.
vsnprintfje shodné s _vsnprintf.vsnprintfje pro splnění požadavků na standardní; ANSI _vnsprintfje zachována z důvodu zpětné kompatibility.
Verze těchto funkcí se _l přípony jsou shodné s výjimkou, že používají národní prostředí parametr předaný namísto aktuální podproces národní prostředí.
V jazyce C++ mají tyto funkce šablony přetížení, které vyvolávají novější, zabezpečené protějšků těchto funkcí.Další informace naleznete v tématu Přetížení šablony zabezpečení.
Obecný Text rutinní mapování
TCHAR.Rutina H |
_UNICODE & _MBCS není definován |
_MBCS, definice |
_UNICODE, definice |
---|---|---|---|
_vsntprintf |
_vsnprintf |
_vsnprintf |
_vsnwprintf |
_vsntprintf_l |
_vsnprintf_l |
_vsnprintf_l |
_vsnwprintf_l |
Požadavky
Rutina |
Požadované záhlaví |
Volitelné záhlaví |
---|---|---|
vsnprintf |
<stdio.h> a <stdarg.h> |
<varargs.h> * |
_vsnprintf, _vsnprintf_l |
<stdio.h> a <stdarg.h> |
<varargs.h> * |
_vsnwprintf, _vsnwprintf_l |
<stdio.h> nebo <wchar.h> a <stdarg.h> |
<varargs.h> * |
* Vyžaduje kompatibilitu v systému UNIX.
Další informace o kompatibilitě, viz Compatibility v úvodu.
Příklad
// crt_vsnprintf.cpp
// compile with: /W3
#include <stdio.h>
#include <wtypes.h>
void FormatOutput(LPCSTR formatstring, ...)
{
int nSize = 0;
char buff[10];
memset(buff, 0, sizeof(buff));
va_list args;
va_start(args, formatstring);
nSize = vsnprintf( buff, sizeof(buff) - 1, formatstring, args); // C4996
// Note: vsnprintf is deprecated; consider vsnprintf_s instead
printf("nSize: %d, buff: %s\n", nSize, buff);
}
int main() {
FormatOutput("%s %s", "Hi", "there");
FormatOutput("%s %s", "Hi", "there!");
FormatOutput("%s %s", "Hi", "there!!");
}
Ekvivalent v rozhraní .NET Framework
Nelze použít Použijte volání funkce standardní C, PInvoke. Další informace naleznete v tématu Příklady vyvolat platformu.
Viz také
Referenční dokumentace
Syntaxe specifikace formátu: funkce printf a wprintf
fprintf, _fprintf_l, fwprintf, _fwprintf_l
printf, _printf_l, wprintf, _wprintf_l