_snscanf_s
, _snscanf_s_l
, , _snwscanf_s
, _snwscanf_s_l
Lee datos con formato de una longitud especificada a partir de una cadena. Estas funciones son versiones de , , , con _snwscanf_l
mejoras de seguridad, como se describe en Características de seguridad de CRT. _snwscanf
_snscanf_l
_snscanf
Sintaxis
int __cdecl _snscanf_s(
const char * input,
size_t length,
const char * format [, argument_list]
);
int __cdecl _snscanf_s_l(
const char * input,
size_t length,
const char * format,
_locale_t locale [, argument_list]
);
int __cdecl _snwscanf_s(
const wchar_t * input,
size_t length,
const wchar_t * format [, argument_list]
);
int __cdecl _snwscanf_s_l(
const wchar_t * input,
size_t length,
const wchar_t * format,
_locale_t locale [, argument_list]
);
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.
locale
Configuración regional que se va a usar.
argument_list
Argumentos opcionales que se asignarán según la cadena de formato.
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_s
, _sscanf_s_l
, swscanf_s
, _swscanf_s_l
.
Si input
o format
es un NULL
puntero, se invoca el 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_s
, 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_s
, _sscanf_s_l
, swscanf_s
, _swscanf_s_l
.
El parámetro de tamaño de búfer es necesario con los caracteres de campo de tipo c, C, s, S y [. Para obtener más información, vea scanf (Caracteres de campo de tipo).
Nota:
El parámetro de tamaño es del tipo unsigned
, no size_t
.
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_s |
_snscanf_s |
_snscanf_s |
_snwscanf_s |
_sntscanf_s_l |
_snscanf_s_l |
_snscanf_s_l |
_snwscanf_s_l |
Requisitos
Routine | Encabezado necesario |
---|---|
_snscanf_s , _snscanf_s_l |
<stdio.h> |
_snwscanf_s , _snwscanf_s_l |
<stdio.h> o <wchar.h> |
Para obtener más información sobre compatibilidad, consulte Compatibilidad.
Ejemplo
// crt_snscanf_s.c
// This example scans a string of
// numbers, using both the character
// and wide character secure versions
// of the snscanf function.
#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_s( str1, 6, "%s %f", s1, 3, &fp);
printf_s("_snscanf_s converted %d fields: ", i);
printf_s("%s and %f\n", s1, fp);
i = _snwscanf_s( str2, 6, L"%s %f", s2, 3, &fp);
wprintf_s(L"_snwscanf_s converted %d fields: ", i);
wprintf_s(L"%s and %f\n", s2, fp);
}
_snscanf_s converted 2 fields: 15 and 12.000000
_snwscanf_s converted 2 fields: 15 and 12.000000