¿Le resultó útil esta página?
Sus comentarios sobre este contenido son muy importantes. Háganos saber su opinión.
¿Tiene comentarios adicionales?
Caracteres restantes: 1500
Exportar (0) Imprimir
Expandir todo
Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

vscanf, vwscanf

Visual Studio 2013

Lee datos con formato del flujo de entrada estándar. Hay disponibles versiones más seguras de estas funciones; vea vscanf_s, vwscanf_s.

int vscanf(
   const char *format,
   va_list arglist
);
int vwscanf(
   const wchar_t *format,
   va_list arglist
);

format

Cadena de control de formato.

arglist

Lista de argumentos de variable.

Devuelve el número de campos que se convierten y asignan 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 más información sobre estos y otros códigos de error, vea errno, _doserrno, _sys_errlist y _sys_nerr.

La función vscanf lee datos de la secuencia de entrada estándar stdin y escribe los datos en ubicaciones que se proporcionan por la lista de argumentos arglist. Cada argumento de la lista 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.

Nota de seguridad Nota sobre la seguridad

Cuando se utiliza vscanf para leer una cadena, especifique siempre un ancho para el formato %s (por ejemplo, "%32s" en lugar de "%s"); si no, el formato incorrecto de la entrada puede provocar una saturación del búfer. Como alternativa, puede usar la propiedad vscanf_s, vwscanf_s o fgets.

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

Asignaciones de rutina de texto genérico

Rutina TCHAR.H

_UNICODE y _MBCS no definidos

_MBCS definido

_UNICODE definido

_vtscanf

vscanf

vscanf

vwscanf

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

Rutina

Encabezado necesario

vscanf

<stdio.h>

vwscanf

<stdio.h> o <wchar.h>

La consola no se admite en las aplicaciones de Tienda Windows. 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. Para obtener más información sobre compatibilidad, vea Compatibilidad.

// crt_vscanf.c
// compile with: /W3
// This program uses the vscanf and vwscanf functions
// to read formatted input.

#include <stdio.h>
#include <stdarg.h>

int call_vscanf(char *format, ...)
{
    int result;
    va_list arglist;
    va_start(arglist, format);
    result = vscanf(format, arglist);
    va_end(arglist);
    return result;
}

int call_vwscanf(wchar_t *format, ...)
{
    int result;
    va_list arglist;
    va_start(arglist, format);
    result = vwscanf(format, arglist);
    va_end(arglist);
    return result;
}

int main( void )
{
    int   i, result;
    float fp;
    char  c, s[81];
    wchar_t wc, ws[81];
    result = call_vscanf( "%d %f %c %C %80s %80S", &i, &fp, &c, &wc, s, ws );
    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 = call_vwscanf( L"%d %f %hc %lc %80S %80ls", &i, &fp, &c, &wc, s, ws );
    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

Adiciones de comunidad

Mostrar:
© 2015 Microsoft