vwscanf, vfwscanf, vswscanf, vwscanf_s, vfwscanf_s, vswscanf_s
| Definido en el encabezado <wchar.h>
|
||
int vwscanf( const wchar_t *restrict format, va_list vlist );
|
(1) | (desde C99) |
int vfwscanf( FILE *restrict stream,
const wchar_t *restrict format, va_list vlist );
|
(2) | (desde C99) |
int vswscanf( const wchar_t *restrict buffer,
const wchar_t *restrict format, va_list vlist );
|
(3) | (desde C99) |
int vwscanf_s( const wchar_t *restrict format, va_list vlist );
|
(4) | (desde C11) |
int vfwscanf_s( FILE *restrict stream,
const wchar_t *restrict format, va_list vlist );
|
(5) | (desde C11) |
int vswscanf_s( const wchar_t *restrict buffer,
const wchar_t *restrict format, va_list vlist );
|
(6) | (desde C11) |
Lee datos de una variedad de fuentes, los interpreta según format y almacena los resultados en ubicaciones definidas por vlist.
stream.buffer. Llegar al final de la cadena es equivalente a alcanzar la condición de fin de archivo para fwscanf%c, %s y %[ requieren cada uno dos argumentos (el puntero habitual y un valor de tipo rsize_t que indica el tamaño del arreglo receptor, que puede ser 1 al leer con %lc en un solo carácter ancho) y excepto que los siguientes errores se detectan en tiempo de ejecución y llaman a la función manejador de restricción instalada actualmente:
- cualquier argumento de tipo puntero es un puntero nulo
format,streamobufferes un puntero nulo- la cantidad de caracteres que se escribirían mediante %c, %s o %[, más el carácter nulo de terminación, excedería el segundo argumento (rsize_t) proporcionado para cada uno de esos especificadores de conversión
- opcionalmente, cualquier otro error detectable, como un especificador de conversión desconocido
- Como con todas las funciones con verificación de límites,
vwscanf_s,vfwscanf_syvswscanf_ssolo están garantizadas como disponibles si la implementación define__STDC_LIB_EXT1__y el usuario define__STDC_WANT_LIB_EXT1__como la constante entera1antes de incluir <stdio.h>.
Parámetros
| stream | - | flujo de archivo de entrada desde el cual leer |
| buffer | - | puntero a una cadena ancha terminada en nulo desde la cual leer |
| format | - | puntero a una cadena ancha terminada en nulo que especifica cómo leer la entrada |
| vlist | - | lista de argumentos variables que contiene los argumentos receptores. |
La cadena format consiste en
- caracteres anchos que no son espacio en blanco excepto
%: cada uno de esos caracteres en la cadena de formato consume exactamente un carácter idéntico del flujo de entrada, o provoca que la función falle si el siguiente carácter en el flujo no es igual. - caracteres de espacio en blanco: cualquier carácter de espacio en blanco individual en la cadena de formato consume todos los caracteres de espacio en blanco consecutivos disponibles de la entrada (determinado como si se llamara a iswspace en un bucle). Tenga en cuenta que no hay diferencia entre
"\n"," ","\t\t"u otro espacio en blanco en la cadena de formato. - especificaciones de conversión. Cada especificación de conversión tiene el siguiente formato:
- carácter introductorio
%.
- carácter introductorio
- (opcional) carácter de supresión de asignación
*. Si esta opción está presente, la función no asigna el resultado de la conversión a ningún argumento receptor.
- (opcional) carácter de supresión de asignación
- (opcional) número entero (mayor que cero) que especifica el ancho de campo máximo, es decir, el número máximo de caracteres que la función puede consumir al realizar la conversión especificada por la especificación de conversión actual. Tenga en cuenta que
%sy%[pueden provocar un desbordamiento del búfer si no se proporciona el ancho.
- (opcional) número entero (mayor que cero) que especifica el ancho de campo máximo, es decir, el número máximo de caracteres que la función puede consumir al realizar la conversión especificada por la especificación de conversión actual. Tenga en cuenta que
- (opcional) modificador de longitud que especifica el tamaño del argumento receptor, es decir, el tipo de destino real. Esto afecta la precisión de la conversión y las reglas de desbordamiento. El tipo de destino predeterminado es diferente para cada tipo de conversión (consulte la tabla a continuación).
- especificador de formato de conversión.
Los siguientes especificadores de formato están disponibles:
| Especificador de conversión |
Explicación | Tipo de argumento esperado | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Modificador de longitud → | hh
|
h
|
ninguno | l
|
ll
|
j
|
z
|
t
|
L
| |
| Solo disponible desde C99 → | Sí | Sí | Sí | Sí | Sí | |||||
%
|
Coincide con el literal
%. |
N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A |
c
|
Coincide con un carácter o una secuencia de caracteres.
|
N/A | N/A | char* |
wchar_t* |
N/A | N/A | N/A | N/A | N/A |
s
|
Coincide con una secuencia de caracteres que no son espacio en blanco (una cadena).
| |||||||||
[conjunto ]
|
Coincide con una secuencia no vacía de caracteres del conjunto de caracteres.
| |||||||||
d
|
Coincide con un entero decimal.
|
signed char* o unsigned char* |
signed short* o unsigned short* |
signed int* o unsigned int* |
signed long* o unsigned long* |
signed long long* o unsigned long long* |
intmax_t* o uintmax_t* |
size_t* |
ptrdiff_t* |
N/A |
b (C23)
|
Coincide con un entero binario sin signo.
| |||||||||
i
|
Coincide con un entero.
| |||||||||
u
|
Coincide con un entero decimal sin signo.
| |||||||||
o
|
Coincide con un entero octal sin signo.
| |||||||||
xX
|
Coincide con un entero hexadecimal sin signo.
| |||||||||
n
|
Devuelve el número de caracteres leídos hasta ahora.
| |||||||||
a (C99)A (C99)eEfF (C99)gG
|
Coincide con un número de punto flotante.
|
N/A | N/A | float* |
double* |
N/A | N/A | N/A | N/A | long double* |
p
|
Coincide con una secuencia definida por la implementación que define un puntero.
|
. | N/A | void** |
N/A | N/A | N/A | N/A | N/A | N/A |
| Notas | ||||||||||
|
Para cada especificador de conversión que no sea Excepto para el especificador Todos los especificadores de conversión que no sean Si el especificador de longitud Los especificadores de conversión Las especificaciones de conversión correctas para los tipos de enteros de ancho fijo (int8_t, etc.) se definen en el encabezado <inttypes.h> (aunque SCNdMAX, SCNuMAX, etc. son sinónimos de Hay un punto de secuencia después de la acción de cada especificador de conversión; esto permite almacenar múltiples campos en la misma variable "sumidero". Al analizar un valor de punto flotante incompleto que termina en el exponente sin dígitos, como analizar Si una especificación de conversión no es válida, el comportamiento es indefinido. | ||||||||||
Valor de retorno
Notas
Todas estas funciones pueden invocar va_arg, el valor de arg es indeterminado después del retorno. Estas funciones no invocan va_end, y debe hacerlo el llamante.
Ejemplo
| Esta sección está incompleta Motivo: sin ejemplo |
Referencias
- Estándar C11 (ISO/IEC 9899:2011):
- 7.29.2.6 La función vfwscanf (p: 418)
- 7.29.2.8 La función vswscanf (p: 419)
- 7.29.2.10 La función vwscanf (p: 420)
- K.3.9.1.7 La función vfwscanf_s (p: 632-633)
- K.3.9.1.10 La función vswscanf_s (p: 635-636)
- K.3.9.1.12 La función vwscanf_s (p: 637)
- Estándar C99 (ISO/IEC 9899:1999):
- 7.24.2.6 La función vfwscanf (p: 364)
- 7.24.2.8 La función vswscanf (p: 365)
- 7.24.2.10 La función vwscanf (p: 366)
Véase también
(C95)(C95)(C95)(C11)(C11)(C11) |
lee entrada de caracteres anchos formateada desde stdin, un flujo de archivo o un búfer (función) |
Documentación de C++ para vwscanf, vfwscanf, vswscanf
| |