scanf, _scanf_l, wscanf, _wscanf_l

Datos con formato lectura de la secuencia de entrada estándar.Versiones más seguras de estos función están disponibles; 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
    La configuración regional a utilizar.

Valor devuelto

Devuelve el número de campos convierten y asignados correctamente; el valor devuelto no incluye los campos que se leyeron pero no asignados.Devuelve un valor de 0 indica que no se asignó ningún campos.

Si format es un puntero de NULL, se invoca el controlador no válido de parámetro, tal y como se describe en Validación de parámetros.Si la ejecución puede continuar, estas funciones EOF return y errno determinado a EINVAL.

Para obtener información sobre éstos y otros códigos de error, vea _doserrno, errno, _sys_errlist, y _sys_nerr.

Comentarios

La función de scanf lee datos de la secuencia de entrada estándar stdin y escribe los datos en la ubicación especificada por 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 superpuestas, el comportamiento es indefinido.

Nota de seguridadNota sobre la seguridad

Al leer una cadena con scanf, especifique siempre un ancho para el formato de %s (por ejemplo, "%32s" en lugar de "%s"); si no, la entrada con formato incorrecto con facilidad puede producir una saturación del búfer.Como alternativa, considere utilizar scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l o fgets.

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

Las versiones de estas funciones con el sufijo de _l son idénticas salvo que utilizan el parámetro locale pasado en lugar de la configuración regional del subproceso actual.

Asignaciones de la rutina de Genérico- texto

Rutina de TCHAR.H

_UNICODE y _MBCS no definidos

_MBCS definido

_UNICODE definido

_tscanf

scanf

scanf

wscanf

_tscanf_l

_scanf_l

_scanf_l

_wscanf_l

Para obtener más información, vea Campos de la especificación de formato — scanf funciona y el wscanf funciona.

Requisitos

Rutina

Encabezado 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.Los identificadores estándar de la secuencia asociados a la consola, stdin, stdout, y stderr, deben redirigir antes de que las funciones en tiempo de ejecución de C pueden utilizarlos en las aplicaciones de Tienda Windows.Para obtener información adicional de compatibilidad, vea Compatibilidad en la Introducción.

Ejemplo

// 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);
}
  

Equivalente en .NET Framework

Vea también

Referencia

Compatibilidad de punto flotante

E/S de la 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