sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l

Lea los datos con formato de una cadena.Éstas son versiones de sscanf, _sscanf_l, swscanf, _swscanf_l con mejoras de seguridad como se describe en Características de seguridad en CRT.

int sscanf_s(
   const char *buffer,
   const char *format [,
   argument ] ...
);
int _sscanf_s_l(
   const char *buffer,
   const char *format,
   locale_t locale [,
   argument ] ...
);
int swscanf_s(
   const wchar_t *buffer,
   const wchar_t *format [,
   argument ] ...
);
int _swscanf_s_l(
   const wchar_t *buffer,
   const wchar_t *format,
   locale_t locale [,
   argument ] ...
);

Parámetros

  • buffer
    datos almacenados

  • format
    cadena de la Formato-CONTROL.Para obtener más información, vea Especificaciones de formato.

  • argument
    argumentos opcionales

  • locale
    la configuración regional a utilizar

Valor devuelto

Cada una de estas funciones devuelve el número de campos convierten y asignados correctamente; el valor devuelto no incluye los campos que se leyeron pero no asignados.Devuelve un valor de 0 indica que no se asignó ningún campos.El valor devuelto es EOF para un error o si el final de la cadena se logra antes de la primera conversión.

Si buffer o format es un puntero de NULL , 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 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

La función de sscanf_slee datos de buffer en la ubicación especificada por cada argument.Los argumentos después de que la cadena de formato especifique punteros a variables con un tipo que se corresponda con un especificador de tipo en format.A diferencia de la versión menos segura sscanf, se requiere un parámetro del tamaño del búfer al utilizar los caracteres de campo c, C, s, Sy [de tipo.El tamaño de búfer en caracteres se debe proporcionar como un parámetro adicional después de cada búfer que lo requiere.Para obtener más información, vea scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l y caracteres de campo del tipo scanf.

[!NOTA]

El parámetro size es de unsignedtipo, no size_t.

El argumento de format controla la interpretación de los campos de entrada y tiene el mismo formato y función que el argumento de format para la función de scanf_s .Si la copia tiene lugar entre cadenas superpuestas, el comportamiento es indefinido.

swscanf_s es una versión con caracteres anchos de sscanf_s; que los argumentos a swscanf_s son cadenas de caracteres.sscanf_s no controla los caracteres hexadecimales multibyte.swscanf_s no controla los caracteres de ancho completo zona de hexadecimal o “de compatibilidad” Unicode.Si no, swscanf_s y sscanf_s se comportan exactamente igual.

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.

Asignaciones de la rutina de texto genérico

rutina de TCHAR.H

_UNICODE y _MBCS no definido

_MBCS definido

_UNICODE definido

_stscanf_s

sscanf_s

sscanf_s

swscanf_s

_stscanf_s_l

_sscanf_s_l

_sscanf_s_l

_swscanf_s_l

Requisitos

rutina

Encabezado necesario

sscanf_s, _sscanf_s_l

<stdio.h>

swscanf_s, _swscanf_s_l

<stdio.h> o <wchar.h>

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

Ejemplo

// crt_sscanf_s.c
// This program uses sscanf_s to read data items
// from a string named tokenstring, then displays them.

#include <stdio.h>
#include <stdlib.h>

int main( void )
{
   char  tokenstring[] = "15 12 14...";
   char  s[81];
   char  c;
   int   i;
   float fp;

   // Input various data from tokenstring:
   // max 80 character string plus NULL terminator
   sscanf_s( tokenstring, "%s", s, _countof(s) );
   sscanf_s( tokenstring, "%c", &c, sizeof(char) );
   sscanf_s( tokenstring, "%d", &i );
   sscanf_s( tokenstring, "%f", &fp );

   // Output the data read
   printf_s( "String    = %s\n", s );
   printf_s( "Character = %c\n", c );
   printf_s( "Integer:  = %d\n", i );
   printf_s( "Real:     = %f\n", fp );
}
  

Equivalente en .NET Framework

Vea los métodos de Parse , como System:: doble:: análisis.

Vea también

Referencia

E/S de la secuencia

fscanf, _fscanf_l, fwscanf, _fwscanf_l

scanf, _scanf_l, wscanf, _wscanf_l

sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l

_snprintf, _snprintf_l, _snwprintf, _snwprintf_l