Exportar (0) Imprimir
Expandir todo
div
EOF
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

sprintf_s, _sprintf_s_l, swprintf_s, _swprintf_s_l

Datos con formato escribir en una cadena. Éstas son versiones de sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l con mejoras de seguridad como se describe en Características de seguridad en CRT.

int sprintf_s(
   char *buffer,
   size_t sizeOfBuffer,
   const char *format [,
   argument] ... 
);
int _sprintf_s_l(
   char *buffer,
   size_t sizeOfBuffer,
   const char *format,
   locale_t locale [,
   argument] ... 
);
int swprintf_s(
   wchar_t *buffer,
   size_t sizeOfBuffer,
   const wchar_t *format [,
   argument]...
);
int _swprintf_s_l(
   wchar_t *buffer,
   size_t sizeOfBuffer,
   const wchar_t *format,
   locale_t locale [,
   argument]…
);
template <size_t size>
int sprintf_s(
   char (&buffer)[size],
   const char *format [,
   argument] ... 
); // C++ only
template <size_t size>
int swprintf_s(
   wchar_t (&buffer)[size],
   const wchar_t *format [,
   argument]...
); // C++ only

buffer

Ubicación de almacenamiento para los resultados

sizeOfBuffer

Número máximo de caracteres a almacenar.

format

cadena de la Formato-CONTROL

argument

argumentos opcionales

locale

la configuración regional a utilizar.

Para obtener más información, vea Especificaciones de formato.

El número de caracteres con tipo, o – 1 si se ha producido un error. Si buffer o format es un puntero NULL, sprintf_s y devuelva -1 de swprintf_s y conjunto errno a EINVAL.

sprintf_s devuelve el número de bytes almacenados en buffer, sin contar el carácter null de terminación. swprintf_s devuelve el número de caracteres anchos almacenados en buffer, sin contar el carácter ancho final nulo.

La función de sprintf_s da formato y almacena una serie de caracteres y valores en buffer. Cada argument (si existe) se convierte y salida según la especificación correspondiente de formato en format. El formato consta de los caracteres ordinarios y tiene el mismo formato y función que el argumento de format para printf. Un carácter null se anexan después del último carácter con tipo. Si la copia aparece entre cadenas superpuestas, el comportamiento es indefinido.

Una gran diferencia entre sprintf_s y sprintf es que sprintf_s comprueba la cadena de formato de los caracteres de formato válidos, mientras que las comprobaciones de sprintf sólo si la cadena de formato o el búfer es punteros de NULL . Si se invoca cualquiera los errores activados, 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, la función devuelve -1 y establece errno a EINVAL.

Otra diferencia principal entre sprintf_s y sprintf es que sprintf_s toma un parámetro de longitud que especifica el tamaño del búfer de salida en caracteres. Si el búfer es demasiado pequeño para el texto a que se va a imprimir el búfer está establecida en una cadena vacía y se invoca el controlador no válido del parámetro. A diferencia de snprintf, sprintf_s garantiza que el búfer será terminada en null (a menos que el tamaño de búfer es cero).

swprintf_s es una versión con caracteres anchos de sprintf_s; los argumentos de puntero a swprintf_s son cadenas de caracteres. Detección de errores de codificación en swprintf_s puede diferir de que en sprintf_s. 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.

Hay versiones de sprintf_s que proporcionan un control adicional sobre lo que sucede si el búfer es demasiado pequeño. Para obtener más información, vea _snprintf_s, _snprintf_s_l, _snwprintf_s, _snwprintf_s_l.

Asignaciones de la rutina de texto genérico

rutina de TCHAR.H

_UNICODE y _MBCS no definido

_MBCS definido

_UNICODE definido

_stprintf_s

sprintf_s

sprintf_s

swprintf_s

_stprintf_s_l

_sprintf_s_l

_sprintf_s_l

_swprintf_s_l

rutina

Encabezado necesario

sprintf_s , _sprintf_s_l

<stdio.h>

swprintf_s , _swprintf_s_l

<stdio.h> o <wchar.h>

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

// crt_sprintf_s.c
// This program uses sprintf_s to format various
// data and place them in the string named buffer.
//

#include <stdio.h>

int main( void )
{
   char  buffer[200], s[] = "computer", c = 'l';
   int   i = 35, j;
   float fp = 1.7320534f;

   // Format and print various data: 
   j  = sprintf_s( buffer, 200,     "   String:    %s\n", s );
   j += sprintf_s( buffer + j, 200 - j, "   Character: %c\n", c );
   j += sprintf_s( buffer + j, 200 - j, "   Integer:   %d\n", i );
   j += sprintf_s( buffer + j, 200 - j, "   Real:      %f\n", fp );

   printf_s( "Output:\n%s\ncharacter count = %d\n", buffer, j );
}
Resultado:
   cadena:    equipo
   carácter: l
   entero:   35
   real:      1,732053

recuento de caracteres = 79
// crt_swprintf_s.c
// wide character example
// also demonstrates swprintf_s returning error code
#include <stdio.h>

int main( void )
{
   wchar_t buf[100];
   int len = swprintf_s( buf, 100, L"%s", L"Hello world" );
   printf( "wrote %d characters\n", len );
   len = swprintf_s( buf, 100, L"%s", L"Hello\xffff world" );
   // swprintf_s fails because string contains WEOF (\xffff)
   printf( "wrote %d characters\n", len );
}
escribió 11 caracteres
escribió -1 caracteres

[M:System::String::Format]

Adiciones de comunidad

AGREGAR
Mostrar:
© 2015 Microsoft