vsnprintf, _vsnprintf, _vsnprintf_l, _vsnwprintf, _vsnwprintf_l
Escribe un resultado con formato mediante un puntero a una lista de argumentos. Hay disponibles versiones más seguras de estas funciones; vea 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
Parámetros
buffer
Ubicación de almacenamiento del resultado.count
Número máximo de caracteres a escribir.format
Especificación de formato.argptr
Puntero a la lista de argumentos.locale
Configuración regional que se va a usar.
Para obtener más información, vea Especificaciones de formato.
Valor devuelto
vsnprintf,_vsnprintf, y retorno de _vsnwprintf el número de caracteres tipo si el número de caracteres a escribir menor o igual que count; si el número de caracteres a escribir es mayor que count, se han truncado estas funciones devuelven -1 que indica que generada. El valor devuelto no incluye la null final, si se escribe uno.
Si buffer o format es NULL, o si el número es menor o igual que cero, estas funciones se invoca el controlador no válido de parámetro, tal y como se describe en Validación de parámetros. Si la ejecución puede continuar, estas funciones devuelven -1 y establecen errno en EINVAL.
Comentarios
Cada una de estas funciones contiene un puntero a una lista de argumentos, se da formato a los datos, y prepara a count caracteres en memoria designada por a buffer. Si hay sitio al final (es decir, si el número de caracteres a escribir es menor que count), el búfer se terminada en null.
Nota sobre la seguridad |
---|
Asegúrese de que format no es una cadena definida por el usuario.Para obtener más información, vea Evitar saturaciones del búfer. |
Nota
Para asegurarse de que haya espacio para la null final, asegúrese de que count es estrictamente menor que la longitud del búfer y inicializase el búfer como null antes de llamar a la función.
vsnprintf es idéntica a _vsnprintf. vsnprintf se incluye para la compatibilidad con el estándar ANSI; _vnsprintf se conserva por compatibilidad con versiones anteriores.
Las versiones de estas funciones con el sufijo _l son idénticas salvo que usan el parámetro locale pasado en lugar de la configuración regional del subproceso actual.
En C++, estas funciones tienen sobrecargas de plantilla que invocan los homólogos seguros más recientes de estas funciones. Para obtener más información, vea Sobrecargas de plantilla seguras.
Asignaciones de rutina de texto genérico
Rutina TCHAR.H |
_UNICODE y _MBCS no definidos |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_vsntprintf |
_vsnprintf |
_vsnprintf |
_vsnwprintf |
_vsntprintf_l |
_vsnprintf_l |
_vsnprintf_l |
_vsnwprintf_l |
Requisitos
Rutina |
Encabezado necesario |
Encabezados opcionales |
---|---|---|
vsnprintf |
<stdio.h> y <stdarg.h> |
<varargs.h>* |
_vsnprintf, _vsnprintf_l |
<stdio.h> y <stdarg.h> |
<varargs.h>* |
_vsnwprintf, _vsnwprintf_l |
<stdio.h> o <wchar.h>, y <stdarg.h> |
<varargs.h>* |
* Necesario para la compatibilidad con UNIX V.
Para obtener información adicional de compatibilidad, vea Compatibilidad en la Introducción.
Ejemplo
// 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 en .NET Framework
No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma.
Vea también
Referencia
Sintaxis de especificación de formato: Funciones printf y wprintf
fprintf, _fprintf_l, fwprintf, _fwprintf_l
printf, _printf_l, wprintf, _wprintf_l