vsscanf, vswscanf

 

Pour obtenir la dernière documentation sur Visual Studio 2017 RC, consultez Documentation Visual Studio 2017 RC.

Lit les données mises en forme à partir d'une chaîne. Des versions plus sécurisées de ces fonctions sont disponibles ; consultez vsscanf_s, vswscanf_s.

int vsscanf(  
   const char *buffer,  
   const char *format,  
   va_list arglist  
);  
int vswscanf(  
   const wchar_t *buffer,  
   const wchar_t *format,  
   va_list arglist  
);  

Paramètres

buffer
Données stockées

format
Chaîne de contrôle de format. Pour plus d'informations, consultez Champs de spécification de format : fonctions scanf et wscanf.

arglist
Liste d'arguments variable.

Chacune de ces fonctions retourne le nombre de champs qui sont correctement convertis et assignés ; la valeur de retour n'inclut pas les champs qui ont été lus mais non assignés. La valeur de retour 0 indique qu'aucun champ n'a été assigné. La valeur de retour est EOF pour une erreur ou si la fin de la chaîne est atteinte avant la première conversion.

Si buffer ou format est un pointeur NULL, le gestionnaire de paramètres non valides est appelé, comme décrit dans Validation de paramètre. Si l'exécution est autorisée à se poursuivre, ces fonctions retournent -1 et attribuent à errno la valeur EINVAL.

Pour plus d'informations sur ces codes de retour et autres, consultez errno, _doserrno, _sys_errlist et _sys_nerr.

La fonction vsscanf lit les données de buffer dans les emplacements fournis par chaque argument de la liste d'arguments arglist. Chaque argument de la liste doit être un pointeur vers une variable dont le type correspond à un spécificateur de type dans format. L'argument format contrôle l'interprétation des champs d'entrée et a la même forme et fonction que l'argument format pour la fonction scanf. Si la copie se produit entre des chaînes qui se chevauchent, le comportement est indéfini.

System_CAPS_ICON_important.jpg Important

Lorsque vous utilisez vsscanf pour lire une chaîne, spécifiez toujours une largeur du format de %s (par exemple, "%32s" au lieu de "%s") ; sinon, l'entrée mal mise en forme peut provoquer un dépassement de mémoire tampon.

vswscanf est une version à caractères larges de vsscanf ; les arguments vers vswscanf sont des chaînes à caractères larges. vsscanf ne gère pas les caractères hexadécimaux multi octets. vswscanf ne gère pas les caractères pleine chasse hexadécimaux Unicode ou de « zone de compatibilité ». Sinon, vswscanf et vsscanf se comportent de la même façon.

Mappages de routines de texte générique

Routine TCHAR.H_UNICODE & _MBCS non définis_MBCS défini_UNICODE défini
_vstscanfvsscanfvsscanfvswscanf
RoutineEn-tête requis
vsscanf<stdio.h>
vswscanf<stdio.h> ou <wchar.h>

Pour plus d'informations sur la compatibilité, consultez Compatibilité.

// crt_vsscanf.c  
// compile with: /W3  
// This program uses vsscanf to read data items  
// from a string named tokenstring, then displays them.  
  
#include <stdio.h>  
#include <stdarg.h>  
  
int call_vsscanf(char *tokenstring, char *format, ...)  
{  
    int result;  
    va_list arglist;  
    va_start(arglist, format);  
    result = vsscanf(tokenstring, format, arglist);  
    va_end(arglist);  
    return result;  
}  
  
int main( void )  
{  
    char  tokenstring[] = "15 12 14...";  
    char  s[81];  
    char  c;  
    int   i;  
    float fp;  
  
    // Input various data from tokenstring:  
    // max 80 character string:  
    call_vsscanf(tokenstring, "%80s", s);  
    call_vsscanf(tokenstring, "%c", &c);  
    call_vsscanf(tokenstring, "%d", &i);  
    call_vsscanf(tokenstring, "%f", &fp);  
  
    // Output the data read  
    printf("String    = %s\n", s);  
    printf("Character = %c\n", c);  
    printf("Integer:  = %d\n", i);  
    printf("Real:     = %f\n", fp);  
}  

Chaîne = 15
Caractère = 1
Entier : = 15
Réel : = 15.000000

Voir également les méthodes Parse, telles que System::Double::Parse.

E/S de flux
scanf, _scanf_l, wscanf, _wscanf_l
sscanf, _sscanf_l, swscanf, _swscanf_l
sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l
vsscanf_s, vswscanf_s

Afficher: