scanf, _scanf_l, wscanf, _wscanf_l

 

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte documentación de Visual Studio 2017 RC.

Lee datos con formato del flujo de entrada estándar. Hay disponibles versiones más seguras de estas funciones; vea scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l.

int scanf(  
   const char *format [,  
   argument]...   
);  
int _scanf_l(  
   const char *format,  
   locale_t locale [,  
   argument]...   
);  
int wscanf(  
   const wchar_t *format [,  
   argument]...   
);  
int _wscanf_l(  
   const wchar_t *format,  
   locale_t locale [,  
   argument]...   
);  

Parámetros

format
Cadena de control de formato.

argument
Argumentos opcionales.

locale
Configuración regional que se va a usar.

Devuelve el número de campos que se han convertido y asignado correctamente; el valor devuelto no incluye los campos que se leyeron pero no se asignaron. Un valor devuelto de 0 indica que no se ha asignado ningún campo.

Si format es un puntero NULL, 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 obtener información sobre estos y otros códigos de error, vea _doserrno, errno, _sys_errlist y _sys_nerr.

La función scanf lee datos del flujo de entrada estándar stdin y escribe los datos en la ubicación que se proporciona en argument. Cada argument debe ser un puntero a una variable de un tipo que se corresponda con un especificador de tipo en format. Si la copia tiene lugar entre cadenas que se superponen, el comportamiento es indefinido.

System_CAPS_ICON_important.jpg Importante

Al leer una cadena con scanf, 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. También puede usar scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l o fgets.

wscanf es una versión con caracteres anchos de scanf; el argumento format para wscanf es una cadena de caracteres anchos. wscanf y scanf se comportan exactamente igual si el flujo se abre en modo ANSI. scanf no admite actualmente la entrada desde un flujo UNICODE.

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
_tscanfscanfscanfwscanf
_tscanf_l_scanf_l_scanf_l_wscanf_l

Para obtener más información, vea Campos de especificación de formato: funciones scanf y wscanf.

RutinaEncabezado necesario
scanf, _scanf_l<stdio.h>
wscanf, _wscanf_l<stdio.h> o <wchar.h>

La consola no se admite en las aplicaciones de Tienda Windows 8.x. Se deben redirigir los identificadores estándar de flujo que están asociados a la consola, stdin, stdout y stderr, antes de que las funciones en tiempo de ejecución de C puedan usarlos en aplicaciones de Tienda Windows 8.x. Para obtener más información sobre compatibilidad, vea Compatibilidad.

// crt_scanf.c  
// compile with: /W3  
 /* This program uses the scanf and wscanf functions  
  * to read formatted input.  
  */  
  
#include <stdio.h>  
  
int main( void )  
{  
   int   i, result;  
   float fp;  
   char  c, s[81];  
   wchar_t wc, ws[81];  
   result = scanf( "%d %f %c %C %80s %80S", &i, &fp, &c, &wc, s, ws ); // C4996  
   // Note: scanf and wscanf are deprecated; consider using scanf_s and wscanf_s  
   printf( "The number of fields input is %d\n", result );  
   printf( "The contents are: %d %f %c %C %s %S\n", i, fp, c, wc, s, ws);  
   result = wscanf( L"%d %f %hc %lc %80S %80ls", &i, &fp, &c, &wc, s, ws ); // C4996  
   wprintf( L"The number of fields input is %d\n", result );  
   wprintf( L"The contents are: %d %f %C %c %hs %s\n", i, fp, c, wc, s, ws);  
}  

Caracteres de byte 71 98.6 h z Caracteres anchos 36 92.3 y nEl número de la entrada de los campos es 6
El contenido es: Caracteres de byte 71 98.599998 h z
El número de entrada de campos es 6
El contenido es: Caracteres anchos 36 92.300003 y n

Compatibilidad con el punto flotante
E/S de secuencia
Configuración regional
fscanf, _fscanf_l, fwscanf, _fwscanf_l
printf, _printf_l, wprintf, _wprintf_l
sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l
sscanf, _sscanf_l, swscanf, _swscanf_l

Mostrar: