_cscanf_s
, _cscanf_s_l
, , _cwscanf_s
, _cwscanf_s_l
Lee datos con formato de la consola. Estas versiones más seguras de _cscanf
, _cscanf_l
, _cwscanf
, _cwscanf_l
tienen mejoras de seguridad, como se describe en Características de seguridad de CRT.
Importante
Esta API no se puede usar en aplicaciones que se ejecutan en Windows en tiempo de ejecución. Para obtener más información, vea Funciones de CRT no admitidas en aplicaciones de la Plataforma universal de Windows.
Sintaxis
int _cscanf_s(
const char *format [,
argument] ...
);
int _cscanf_s_l(
const char *format,
_locale_t locale [,
argument] ...
);
int _cwscanf_s(
const wchar_t *format [,
argument] ...
);
int _cwscanf_s_l(
const wchar_t *format,
_locale_t locale [,
argument] ...
);
Parámetros
format
Cadena de control de formato.
argument
Parámetros opcionales.
locale
Configuración regional que se va a usar.
Valor devuelto
Número de campos que se convirtieron y asignaron correctamente. El valor devuelto no incluye los campos que se han leído pero no se han asignado. El valor devuelto es EOF
para un intento de lectura al final del archivo. También EOF
se puede devolver cuando se redirige la entrada del teclado en el nivel de línea de comandos del sistema operativo. Un valor devuelto de cero significa que no se asignó ningún campo.
Estas funciones validan sus parámetros. Si format
es un puntero nulo, estas funciones invocan 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 errno
se establece en EINVAL
.
Comentarios
La función _cscanf_s
lee datos directamente de la consola en las ubicaciones especificadas por argument
. La _getche
función se usa para leer caracteres. Cada parámetro opcional debe ser un puntero a una variable con un tipo que se corresponda con un especificador de tipo en format
. El formato controla la interpretación de los campos de entrada y tiene el mismo formulario y función que el format
parámetro de la scanf_s
función. Aunque _cscanf_s
normalmente devuelve el carácter de entrada, no lo hace si la última llamada era a _ungetch
.
Al igual que otras versiones seguras de funciones de la scanf
familia y _cscanf_s
_cwscanf_s
requieren argumentos de tamaño para los caracteres de campo de tipo c, C, s, S y [. Para más información, vea scanf (Especificación de ancho).
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 |
---|---|---|---|
_tcscanf_s |
_cscanf_s |
_cscanf_s |
_cwscanf_s |
_tcscanf_s_l |
_cscanf_s_l |
_cscanf_s_l |
_cwscanf_s_l |
Requisitos
Routine | Encabezado necesario |
---|---|
_cscanf_s , _cscanf_s_l |
<conio.h> |
_cwscanf_s , _cwscanf_s_l |
<conio.h> o <wchar.h> |
Para obtener más información sobre compatibilidad, consulte Compatibilidad.
Bibliotecas
Todas las versiones de las bibliotecas en tiempo de ejecución de C.
Ejemplo
// crt_cscanf_s.c
// compile with: /c
/* This program prompts for a string
* and uses _cscanf_s to read in the response.
* Then _cscanf_s returns the number of items
* matched, and the program displays that number.
*/
#include <stdio.h>
#include <conio.h>
int main( void )
{
int result, n[3];
int i;
result = _cscanf_s( "%i %i %i", &n[0], &n[1], &n[2] );
_cprintf_s( "\r\nYou entered " );
for( i=0; i<result; i++ )
_cprintf_s( "%i ", n[i] );
_cprintf_s( "\r\n" );
}
1 2 3
You entered 1 2 3
Vea también
E/S de consola y de puerto
_cprintf
, _cprintf_l
, , _cwprintf
, _cwprintf_l
fscanf_s
, _fscanf_s_l
, , fwscanf_s
, _fwscanf_s_l
scanf_s
, _scanf_s_l
, , wscanf_s
, _wscanf_s_l
sscanf_s
, _sscanf_s_l
, , swscanf_s
, _swscanf_s_l