Sdílet prostřednictvím


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.

Poznámka k zabezpečeníPoznámka k zabezpečení

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

Proud I/O

Funkce vprintf

Syntaxe specifikace formátu: funkce printf a wprintf

fprintf, _fprintf_l, fwprintf, _fwprintf_l

printf, _printf_l, wprintf, _wprintf_l

sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l

va_arg, va_end, va_start