sscanf, _sscanf_l, swscanf, _swscanf_l
Datos con formato lectura de una cadena. Hay disponibles versiones más seguras de estas funciones; 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 almacenadosformat
Cadena de control de formato. Para obtener más información, vea Especificaciones de formato.argument
Argumentos opcionaleslocale
Configuración regional que se va a usar
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. Un valor devuelto de 0 indica que no se ha asignado ningún campo. El valor devuelto es EOF en caso de error o si el final de la cadena se alcanza antes de la primera conversión.
Si buffer o format es un puntero NULL, se invoca el controlador de parámetros no válidos, se describe en Validación de parámetros. Si la ejecución puede continuar, estas 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.
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 format controla la interpretación de los campos de entrada y tiene el mismo formato y función que el argumento format para la función scanf. Si la copia tiene lugar entre cadenas que se superponen, el comportamiento es indefinido.
![]() |
---|
Al leer una cadena con sscanf, especifique siempre un ancho para el formato %s (por ejemplo, "%32s" en lugar de "%s"); si no se hace así, el formato incorrecto de la entrada puede provocar una saturación del búfer. |
swscanf es una versión con caracteres anchos de sscanf; los argumentos a swscanf son cadenas de caracteres anchos. sscanfno controla los caracteres hexadecimales multibyte. swscanf no controla caracteres de "zona de compatibilidad" o hexadecimal de ancho completo de Unicode. De lo contrario, los objetos swscanf y sscanf se comportan de forma idéntica.
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.
Asignaciones de rutina de texto genérico
Rutina TCHAR.H |
_UNICODE y _MBCS no definidos |
_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 Parse, por ejemplo System::Double::Parse.
Vea también
Referencia
fscanf, _fscanf_l, fwscanf, _fwscanf_l
scanf, _scanf_l, wscanf, _wscanf_l