vsprintf_s, _vsprintf_s_l, vswprintf_s, _vswprintf_s_l

Escribir con formato salida mediante un puntero a una lista de argumentos.Éstas son versiones de vsprintf, _vsprintf_l, vswprintf, _vswprintf_l, __vswprintf_l con mejoras de seguridad como se describe en Características de seguridad en CRT.

int vsprintf_s(
   char *buffer,
   size_t numberOfElements,
   const char *format,
   va_list argptr 
); 
int _vsprintf_s_l(
   char *buffer,
   size_t numberOfElements,
   const char *format,
   locale_t locale,
   va_list argptr 
); 
int vswprintf_s(
   wchar_t *buffer,
   size_t numberOfElements,
   const wchar_t *format,
   va_list argptr 
);
int _vswprintf_s_l(
   wchar_t *buffer,
   size_t numberOfElements,
   const wchar_t *format,
   locale_t locale,
   va_list argptr 
);
template <size_t size>
int vsprintf_s(
   char (&buffer)[size],
   const char *format,
   va_list argptr 
); // C++ only
template <size_t size>
int vswprintf_s(
   wchar_t (&buffer)[size],
   const wchar_t *format,
   va_list argptr 
); // C++ only

Parámetros

  • buffer
    Ubicación de almacenamiento para el resultado.

  • numberOfElements
    Tamaño de buffer en caracteres.

  • format
    Especificación de formato.

  • argptr
    puntero a la lista de argumentos.

  • locale
    la configuración regional a utilizar.

Valor devuelto

vsprintf_s y vswprintf_s devuelven el número de caracteres y, sin incluir el carácter null de terminación, o un valor negativo si un error de salida aparece.Si buffer o format es un puntero NULL, si el número es cero, o si la cadena de formato contiene caracteres de formato no válidos, 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, las funciones devuelven -1 y errno establecido en EINVAL.

Para obtener información sobre éstos y otros códigos de error, vea _doserrno, errno, _sys_errlist, y _sys_nerr.

Comentarios

Cada una de estas funciones contiene un puntero a una lista de argumentos, y después los formatos y escribe los datos especificados en memoria designada por a buffer.

vswprintf_s se ajusta a ISO C estándar para vswprintf, que requiere el segundo parámetro, count, de size_tescrito.

Estas funciones se diferencian de las versiones de no sólo en que las versiones seguras admiten parámetros posicionales.Para obtener más información, vea parámetros posicionales De printf_p.

Las versiones de estas funciones con el sufijo de _l son idénticas salvo que utilizan el parámetro locale pasado en lugar de la configuración regional del subproceso actual.

En C++, mediante estas funciones es simplificado con sobrecargas de plantilla; las sobrecargas pueden deducir la longitud de búfer automáticamente (que elimina la necesidad de especificar un argumento de tamaño) y automáticamente pueden reemplazar anterior, funciones de no con sus más recientes, seguros homólogos.Para obtener más información, vea Sobrecargas de plantilla de seguridad.

Asignaciones de la rutina de texto genérico

rutina de TCHAR.H

_UNICODE y _MBCS no definido

_MBCS definido

_UNICODE definido

_vstprintf_s

vsprintf_s

vsprintf_s

vswprintf_s

_vstprintf_s_l

_vsprintf_s_l

_vsprintf_s_l

_vswprintf_s_l

Requisitos

rutina

Encabezado necesario

encabezados opcionales

vsprintf_s, _vsprintf_s_l

<stdio.h> y <stdarg.h>

<varargs.h> *

vswprintf_s, _vswprintf_s_l

<stdio.h> o <wchar.h> , y <stdarg.h>

<varargs.h> *

* Necesario para la compatibilidad de UNIX V.

Para obtener información adicional de compatibilidad, vea compatibilidad en la Introducción.

Ejemplo

// crt_vsprintf_s.c
// This program uses vsprintf_s to write to a buffer.
// The size of the buffer is determined by _vscprintf.

#include <stdlib.h>
#include <stdarg.h>

void test( char * format, ... )
{
   va_list args;
   int len;
   char * buffer;

   va_start( args, format );
   len = _vscprintf( format, args ) // _vscprintf doesn't count
                               + 1; // terminating '\0'
   buffer = malloc( len * sizeof(char) );
   vsprintf_s( buffer, len, format, args );
   puts( buffer );
   free( buffer );
}

int main( void )
{
   test( "%d %c %d", 123, '<', 456 );
   test( "%s", "This is a string" );
}
  

Equivalente en .NET Framework

System:: cadena:: formato

Vea también

Referencia

E/S de la secuencia

funciones de vprintf

Sintaxis de especificación de formato: Funciones printf y 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