Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés
Esta documentación está archivada y no tiene mantenimiento.

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]... 
);

format

Cadena de control de formato.

argument

Argumentos opcionales.

locale

La configuración regional a utilizar.

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.

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 seguridad Nota 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.

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.

// 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);
}
el número de 71 98,6 caracteres de byte la z de h 36 92,3 caracteres anchos n la y Forma de campos que la entrada es 6 contenido de Z es: número de 71 98,599998 de h de la z caracteres de byte campos que la entrada es 6 contenido de Z es: 36 92,300003 caracteres anchos n la y
Mostrar: