Condividi tramite


vsnprintf, _vsnprintf, _vsnprintf_l, _vsnwprintf, _vsnwprintf_l

Scrivere l'output formattato utilizzando un puntatore a un elenco di argomenti.Più versioni sicure di queste funzioni sono disponibili, vedere 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

Parametri

  • buffer
    Percorso di archiviazione per l'output.

  • count
    Numero massimo di caratteri da scrivere.

  • format
    Specifica di formato.

  • argptr
    Puntatore all'elenco degli argomenti.

  • locale
    le impostazioni locali da utilizzare.

Per ulteriori informazioni, vedere Specifiche di formato.

Valore restituito

vsnprintf,_vsnprintfe _vsnwprintf restituisce il numero di caratteri scritto se il numero di caratteri da scrivere è minore o uguale a count; se il numero di caratteri da scrivere è maggiore di count, queste funzioni restituiscono -1 che indica che hanno restituito è stata troncata.Il valore restituito non include null di terminazione, se è scritto.

se buffer o format viene NULL, o se il conteggio è minore o uguale a zero, queste funzioni richiamare il gestore non valido di parametro, come descritto in Convalida dei parametri.Se l'esecuzione è consentita per continuare, queste funzioni restituiscono -1 e impostate errno in EINVAL.

Note

Ognuna di queste funzioni accetta un puntatore a un elenco di argomenti, quindi vengono formattati dati e prepara a count caratteri a quella indicata da buffer.Se c " viene lasciata alla fine (ovvero se il numero di caratteri da scrivere è minore di count), il buffer sarà con terminazione null.

Nota sulla sicurezzaNota sulla sicurezza

Assicurarsi che format non è una stringa definita dall'utente.Per ulteriori informazioni, vedere Evitare i sovraccarichi del buffer.

[!NOTA]

Per assicurarsi che c " viene lasciata del valore null di terminazione, assicurarsi che count è rigorosamente minore della lunghezza del buffer e inizializza il buffer per annullare prima di chiamare la funzione.

vsnprintf equivale a _vsnprintf.vsnprintf è incluso per conformità allo standard ANSI; _vnsprintf viene mantenuto per compatibilità con le versioni precedenti.

le versioni di queste funzioni con _l il suffisso è identico con la differenza che utilizzano il parametro delle impostazioni locali passato alle impostazioni locali del thread corrente.

In C++, queste funzioni presentano overload del modello da richiamare le più recenti, controparti sicure di queste funzioni.Per ulteriori informazioni, vedere Assicurarsi che gli overload del modello.

Mapping di routine a testo generico

routine di TCHAR.H

_UNICODE & _MBCS non definiti

_MBCS definito

_UNICODE definito

_vsntprintf

_vsnprintf

_vsnprintf

_vsnwprintf

_vsntprintf_l

_vsnprintf_l

_vsnprintf_l

_vsnwprintf_l

Requisiti

routine

Intestazione di associazione

intestazioni facoltative

vsnprintf

<stdio.h> e <stdarg.h>

<varargs.h> *

_vsnprintf, _vsnprintf_l

<stdio.h> e <stdarg.h>

<varargs.h> *

_vsnwprintf, _vsnwprintf_l

<stdio.h> o <wchar.h> e <stdarg.h>

<varargs.h> *

* Obbligatorio per la compatibilità dell'utilità UNIX V.

per informazioni di compatibilità aggiuntive, vedere compatibilità nell'introduzione.

Esempio

// 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!!");
}
  
  

Equivalente .NET Framework

Non applicabile. Per chiamare la funzione c standard, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di pinvoke.

Vedere anche

Riferimenti

Flusso I/O

funzioni di vprintf

Sintassi per la specifica del formato: funzioni printf 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