Exportar (0) Imprimir
Expandir todo
and
div
eof
not
or
xor
Expandir Minimizar
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

vsprintf_s, _vsprintf_s_l, vswprintf_s, _vswprintf_s_l

Escribe un resultado con formato mediante un puntero a una lista de argumentos. Estas versiones de vsprintf, _vsprintf_l, vswprintf, _vswprintf_l, __vswprintf_l tienen mejoras de seguridad, como se describe en Características de seguridad de 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

buffer

Ubicación de almacenamiento del resultado.

numberOfElements

Tamaño de buffer en caracteres.

format

Especificación de formato.

argptr

Puntero a la lista de argumentos.

locale

Configuración regional que se va a usar.

vsprintf_s y vswprintf_s devuelven el número de caracteres escritos, sin incluir el carácter de terminación nulo, o un valor negativo si se produce un error de salida. 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 establecen errno en EINVAL.

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

Cada una de estas funciones toma un puntero a una lista de argumentos y, a continuación, aplica formato a los datos determinados y los escribe en la memoria a la que señala 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 Secure sólo en que las versiones seguras admiten parámetros posicionales. Para obtener más información, vea printf_p (Parámetros de posición).

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++, el uso de estas funciones se simplifica con las sobrecargas de plantilla; las sobrecargas pueden realizar una inferencia automáticamente de la longitud de búfer (lo que elimina la necesidad de especificar un argumento de tamaño) y pueden reemplazar automáticamente funciones anteriores no seguras con sus homólogos seguros más recientes. 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

_vstprintf_s

vsprintf_s

vsprintf_s

vswprintf_s

_vstprintf_s_l

_vsprintf_s_l

_vsprintf_s_l

_vswprintf_s_l

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 con UNIX V.

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

// 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" );
}
123 < 456
This is a string

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft