Compartir a través de


sscanf, _sscanf_l, swscanf, _swscanf_l

Lea los datos con formato de una cadena.Versiones más seguras de estas funciones están disponibles; vea sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l.

int sscanf(
   const char *buffer,
   const char *format [,
   argument ] ... 
);
int _sscanf_l(
   const char *buffer,
   const char *format,
   locale_t locale [,
   argument ] ... 
);
int swscanf(
   const wchar_t *buffer,
   const wchar_t *format [,
   argument ] ... 
);
int _swscanf_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 lee datos de buffer en la ubicación especificada por cada argument.Cada argument debe ser un puntero a una variable con un tipo que corresponde a un especificador de tipo en format.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 .Si la copia tiene lugar entre cadenas superpuestas, el comportamiento es indefinido.

Nota de seguridadNota sobre la seguridad

Al leer una cadena con sscanf, especifique siempre un ancho para el formato de %s (por ejemplo, "%32s" en lugar de "%s"); si no, la entrada con formato incorrecto con facilidad puede producir una saturación del búfer.

swscanf es una versión con caracteres anchos de sscanf; los argumentos de swscanf son cadenas de caracteres.sscanfno controla los caracteres hexadecimales multibyte.swscanf no controla los caracteres de ancho completo zona de hexadecimal o “de compatibilidad” Unicode.Si no, swscanf y sscanf 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

sscanf

sscanf

swscanf

_stscanf_l

_sscanf_l

_sscanf_l

_swscanf_l

Requisitos

rutina

Encabezado necesario

sscanf, _sscanf_l

<stdio.h>

swscanf, _swscanf_l

<stdio.h> o <wchar.h>

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

Ejemplo

// crt_sscanf.c
// compile with: /W3
// This program uses sscanf to read data items
// from a string named tokenstring, then displays them.

#include <stdio.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:
   sscanf( tokenstring, "%80s", s ); // C4996
   sscanf( tokenstring, "%c", &c );  // C4996
   sscanf( tokenstring, "%d", &i );  // C4996
   sscanf( tokenstring, "%f", &fp ); // C4996
   // Note: sscanf is deprecated; consider using sscanf_s instead

   // Output the data read
   printf( "String    = %s\n", s );
   printf( "Character = %c\n", c );
   printf( "Integer:  = %d\n", i );
   printf( "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