vwscanf, vfwscanf, vswscanf, vwscanf_s, vfwscanf_s, vswscanf_s
| Défini dans l'en-tête <wchar.h>
|
||
int vwscanf( const wchar_t *restrict format, va_list vlist );
|
(1) | (depuis C99) |
int vfwscanf( FILE *restrict stream,
const wchar_t *restrict format, va_list vlist );
|
(2) | (depuis C99) |
int vswscanf( const wchar_t *restrict buffer,
const wchar_t *restrict format, va_list vlist );
|
(3) | (depuis C99) |
int vwscanf_s( const wchar_t *restrict format, va_list vlist );
|
(4) | (depuis C11) |
int vfwscanf_s( FILE *restrict stream,
const wchar_t *restrict format, va_list vlist );
|
(5) | (depuis C11) |
int vswscanf_s( const wchar_t *restrict buffer,
const wchar_t *restrict format, va_list vlist );
|
(6) | (depuis C11) |
Lit les données depuis une variété de sources, les interprète conformément à format et stocke les résultats dans les emplacements définis par vlist.
stream.buffer. Atteindre la fin de la chaîne équivaut à atteindre la condition de fin de fichier pour fwscanf%c, %s, et %[ les spécificateurs de conversion attendent chacun deux arguments (le pointeur habituel et une valeur de type rsize_t indiquant la taille du tableau de réception, qui peut être 1 lors de la lecture avec %lc dans un seul caractère large) et sauf que les erreurs suivantes sont détectées à l'exécution et appellent la fonction gestionnaire de contrainte actuellement installée :
- tout argument de type pointeur est un pointeur nul
format,stream, oubufferest un pointeur nul- le nombre de caractères qui seraient écrits par %c, %s, ou %[, plus le caractère nul de terminaison, dépasserait le deuxième argument (rsize_t) fourni pour chacun de ces spécificateurs de conversion
- éventuellement, toute autre erreur détectable, comme un spécificateur de conversion inconnu
- Comme pour toutes les fonctions avec vérification des bornes,
vwscanf_s,vfwscanf_s, etvswscanf_sne sont garanties d'être disponibles que si__STDC_LIB_EXT1__est définie par l'implémentation et si l'utilisateur définit__STDC_WANT_LIB_EXT1__comme la constante entière1avant d'inclure <stdio.h>.
Paramètres
| stream | - | flux de fichier d'entrée à lire |
| buffer | - | pointeur vers une chaîne large terminée par un caractère nul à lire |
| format | - | pointeur vers une chaîne large terminée par un caractère nul spécifiant comment lire l'entrée |
| vlist | - | liste d'arguments variables contenant les arguments de réception. |
La chaîne format se compose de
- caractères larges non blancs sauf
%: chaque tel caractère dans la chaîne de format consomme exactement un caractère identique du flux d'entrée, ou entraîne l'échec de la fonction si le caractère suivant sur le flux ne lui est pas égal. - caractères blancs : tout caractère blanc unique dans la chaîne de format consomme tous les caractères blancs consécutifs disponibles depuis l'entrée (déterminé comme si par appel à iswspace dans une boucle). Notez qu'il n'y a pas de différence entre
"\n"," ","\t\t", ou d'autres espaces blancs dans la chaîne de format. - spécifications de conversion. Chaque spécification de conversion a le format suivant :
- caractère d'introduction
%.
- caractère d'introduction
- (optionnel) caractère de suppression d'affectation
*. Si cette option est présente, la fonction n'affecte pas le résultat de la conversion à un argument de réception.
- (optionnel) caractère de suppression d'affectation
- (optionnel) nombre entier (supérieur à zéro) qui spécifie la largeur de champ maximale, c'est-à-dire le nombre maximum de caractères que la fonction est autorisée à consommer lors de la conversion spécifiée par la spécification de conversion courante. Notez que
%set%[peuvent conduire à un débordement de tampon si la largeur n'est pas fournie.
- (optionnel) nombre entier (supérieur à zéro) qui spécifie la largeur de champ maximale, c'est-à-dire le nombre maximum de caractères que la fonction est autorisée à consommer lors de la conversion spécifiée par la spécification de conversion courante. Notez que
- (optionnel) modificateur de longueur qui spécifie la taille de l'argument de réception, c'est-à-dire le type de destination réel. Cela affecte la précision de la conversion et les règles de débordement. Le type de destination par défaut est différent pour chaque type de conversion (voir tableau ci-dessous).
- spécificateur de format de conversion.
Les spécificateurs de format suivants sont disponibles :
| Spécificateur de conversion |
Explication | Type d'argument attendu | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Modificateur de longueur→ | hh
|
h
|
aucun | l
|
ll
|
j
|
z
|
t
|
L
| |
| Disponible seulement depuis C99→ | Oui | Oui | Oui | Oui | Oui | |||||
%
|
Correspond au littéral
%. |
N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A |
c
|
Correspond à un caractère ou à une séquence de caractères.
|
N/A | N/A | char* |
wchar_t* |
N/A | N/A | N/A | N/A | N/A |
s
|
Correspond à une séquence de caractères non blancs (une chaîne).
| |||||||||
[set ]
|
Correspond à une séquence non vide de caractères provenant de l'ensemble de caractères.
| |||||||||
d
|
Correspond à un entier décimal.
|
signed char* ou unsigned char* |
signed short* ou unsigned short* |
signed int* ou unsigned int* |
signed long* ou unsigned long* |
signed long long* ou unsigned long long* |
intmax_t* ou uintmax_t* |
size_t* |
ptrdiff_t* |
N/A |
b (C23)
|
Correspond à un entier binaire non signé.
| |||||||||
i
|
Correspond à un entier.
| |||||||||
u
|
Correspond à un entier décimal non signé.
| |||||||||
o
|
Correspond à un entier octal non signé.
| |||||||||
xX
|
Correspond à un entier hexadécimal non signé.
| |||||||||
n
|
Retourne le nombre de caractères lus jusqu'à présent.
| |||||||||
a (C99)A (C99)eEfF (C99)gG
|
Correspond à un nombre à virgule flottante.
|
N/A | N/A | float* |
double* |
N/A | N/A | N/A | N/A | long double* |
p
|
Correspond à une séquence de caractères définie par l'implémentation définissant un pointeur.
|
. | N/A | void** |
N/A | N/A | N/A | N/A | N/A | N/A |
| Notes | ||||||||||
|
Pour chaque spécificateur de conversion autre que Sauf pour le spécificateur Tous les spécificateurs de conversion autres que Si le spécificateur de longueur Les spécificateurs de conversion Les spécifications de conversion correctes pour les types entiers à largeur fixe (int8_t, etc.) sont définies dans l'en-tête <inttypes.h> (bien que SCNdMAX, SCNuMAX, etc. soient synonymes de Il y a un point de séquence après l'action de chaque spécificateur de conversion ; cela permet de stocker plusieurs champs dans la même variable « sink ». Lors de l'analyse d'une valeur à virgule flottante incomplète qui se termine dans l'exposant sans chiffres, comme l'analyse de Si une spécification de conversion est invalide, le comportement est indéfini. | ||||||||||
Valeur de retour
Notes
Toutes ces fonctions peuvent invoquer va_arg, la valeur de arg est indéterminée après le retour. Ces fonctions n'invoquent pas va_end, et cela doit être fait par l'appelant.
Exemple
| Cette section est incomplète Raison : pas d'exemple |
Références
- Norme C11 (ISO/IEC 9899:2011) :
- 7.29.2.6 La fonction vfwscanf (p. 418)
- 7.29.2.8 La fonction vswscanf (p. 419)
- 7.29.2.10 La fonction vwscanf (p. 420)
- K.3.9.1.7 La fonction vfwscanf_s (p. 632-633)
- K.3.9.1.10 La fonction vswscanf_s (p. 635-636)
- K.3.9.1.12 La fonction vwscanf_s (p. 637)
- Norme C99 (ISO/IEC 9899:1999) :
- 7.24.2.6 La fonction vfwscanf (p. 364)
- 7.24.2.8 La fonction vswscanf (p. 365)
- 7.24.2.10 La fonction vwscanf (p. 366)
Voir aussi
(C95)(C95)(C95)(C11)(C11)(C11) |
lit l'entrée formatée de caractères larges depuis stdin, un flux de fichier ou un tampon (fonction) |
Documentation C++ pour vwscanf, vfwscanf, vswscanf
| |