_snscanf
, _snscanf_l
, , _snwscanf
, _snwscanf_l
Lee datos con formato de una longitud especificada a partir de una cadena. Hay disponibles versiones más seguras de estas funciones; consulte _snscanf_s
, _snscanf_s_l
, _snwscanf_s
, _snwscanf_s_l
.
Sintaxis
int __cdecl _snscanf(
const char * input,
size_t length,
const char * format,
...
);
int __cdecl _snscanf_l(
const char * input,
size_t length,
const char * format,
_locale_t locale,
...
);
int __cdecl _snwscanf(
const wchar_t * input,
size_t length,
const wchar_t * format,
...
);
int __cdecl _snwscanf_l(
const wchar_t * input,
size_t length,
const wchar_t * format,
_locale_t locale,
...
);
Parámetros
input
Cadena de entrada que se va a examinar.
length
Número de caracteres que se van a examinar en input
.
format
Uno o varios especificadores de formato.
...
Variables opcionales que se usarán para almacenar los valores extraídos de la cadena de entrada por los especificadores de formato en format
.
locale
Configuración regional que se va a usar.
Valor devuelto
Ambas funciones devuelven el número de campos convertidos y asignados correctamente; El valor devuelto no incluye campos leídos 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. Para obtener más información, vea sscanf
.
Si input
o format
es un NULL
puntero, o si length
es menor o igual que cero, se invoca al controlador de parámetros no válidos, como se describe en Validación de parámetros. Si la ejecución puede continuar, estas funciones devuelven EOF
y establecen errno
en EINVAL
.
Para información sobre estos y otros códigos de error, consulte errno
, _doserrno
_sys_errlist
y _sys_nerr
.
Comentarios
Esta función es como sscanf
, excepto que permite especificar un número fijo de caracteres que se van a examinar desde la cadena de entrada. Para obtener más información, vea sscanf
.
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 rutinas de texto genérico
Rutina Tchar.h | _UNICODE y _MBCS no definidos |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_sntscanf |
_snscanf |
_snscanf |
_snwscanf |
_sntscanf_l |
_snscanf_l |
_snscanf_l |
_snwscanf_l |
Requisitos
Routine | Encabezado necesario |
---|---|
_snscanf , _snscanf_l |
<stdio.h> |
_snwscanf , _snwscanf_l |
<stdio.h> o <wchar.h> |
Para obtener más información sobre compatibilidad, consulte Compatibilidad.
Ejemplo
// crt_snscanf.c
// compile with: /W3
#include <stdio.h>
int main( )
{
char str1[] = "15 12 14...";
wchar_t str2[] = L"15 12 14...";
char s1[3];
wchar_t s2[3];
int i;
float fp;
i = _snscanf( str1, 6, "%s %f", s1, &fp); // C4996
// Note: _snscanf is deprecated; consider using _snscanf_s instead
printf("_snscanf converted %d fields: ", i);
printf("%s and %f\n", s1, fp);
i = _snwscanf( str2, 6, L"%s %f", s2, &fp); // C4996
// Note: _snwscanf is deprecated; consider using _snwscanf_s instead
wprintf(L"_snwscanf converted %d fields: ", i);
wprintf(L"%s and %f\n", s2, fp);
}
_snscanf converted 2 fields: 15 and 12.000000
_snwscanf converted 2 fields: 15 and 12.000000