Exporter (0) Imprimer
Développer tout
and
div
eof
not
or
xor
Développer Réduire
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

scanf, _scanf_l, wscanf, _wscanf_l

Lit les données mises en forme à partir du flux d'entrée standard. Des versions plus sécurisées de ces fonctions sont disponibles ; consultez 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

Chaîne de contrôle du format.

argument

Arguments facultatifs.

locale

Paramètres régionaux à utiliser.

Retourne le nombre de champs convertis et assignés avec succè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é.

Si 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 EOF et définissent errno avec la valeur EINVAL.

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

La fonction scanf lit les données à partir du flux d'entrée standard stdin et les écrit dans l'emplacement indiqué par argument. Chaque argument doit être un pointeur vers une variable dont le type correspond à un spécificateur de type dans format. Si la copie se produit entre des chaînes qui se chevauchent, le comportement est indéfini.

Note de sécurité Note de sécurité

Lorsque vous lisez une chaîne avec scanf, spécifiez toujours une largeur pour le format %s (par exemple, "%32s" au lieu de "%s") ; sinon, l'entrée mal mise en forme peut facilement provoquer un dépassement de mémoire tampon. Sinon, envisagez d'utiliser scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l ou fgets.

wscanf est une version à caractères larges de scanf; l'argument format vers wscanf est une chaîne à caractères larges. wscanf et scanf se comportent de la même façon si le flux est ouvert en mode ANSI. scanf ne prend actuellement pas en charge la saisie à partir d'un flux d'UNICODE.

Les versions de ces fonctions avec le suffixe _l sont identiques, sauf qu'elles utilisent les paramètres régionaux passés au lieu des paramètres régionaux du thread actuel.

Mappages de routines de texte générique

Routine TCHAR.H

_UNICODE & _MBCS non définis

_MBCS défini

_UNICODE défini

_tscanf

scanf

scanf

wscanf

_tscanf_l

_scanf_l

_scanf_l

_wscanf_l

Pour plus d'informations, consultez Champs de spécification de format — les fonctions scanf et wscanf.

Routine

En-tête requis

scanf , _scanf_l

<stdio.h>

wscanf , _wscanf_l

<stdio.h> ou <wchar.h>

La console n'est pas prise en charge dans les applications Windows Store . Les handles de flux standard associés à la console, stdin, stdout et stderr doivent être redirigés pour que les fonctions runtime C puissent les utiliser dans les applications Windows Store . Pour plus d'informations sur la compatibilité, consultez Compatibilité.

// 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);
}

  71 98,6 caractères d'octet de h z
caractères larges y n 36 92.3Le nombre d'entrées de champs est 6
Le contenu est : 71 98,599998 caractères d'octet de h z
Le nombre d'entrée de champs est 6
Le contenu est : 36 92,300003 caractères larges de y n

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft