Partager via


scanf, _scanf_l, wscanf, _wscanf_l

Données mises en forme lues dans le flux d'entrée standard.Les versions sécurisées ces la fonction 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]... 
);

Paramètres

  • format
    Chaîne de format.

  • argument
    Arguments facultatifs.

  • locale
    Les paramètres régionaux à utiliser.

Valeur de retour

Retourne le nombre de champs avec succès convertis et assignés ; la valeur de retour n'inclut pas les champs qui ont été lus mais non assigné.Une valeur de retour de 0 indique qu'un champ n'a été assigné.

Si format est un pointeur d' NULL, le gestionnaire de paramètre non valide est appelé, comme décrit dans Validation des paramètres.Si est autorisé à l'exécution pour continuer, ces fonctions EOF de retour et affectez errno à EINVAL.

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

Notes

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

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

En lisant une chaîne avec scanf, spécifiez toujours une largeur du format d' %s (par exemple, "%32s" au lieu d' "%s") ; sinon, l'entrée incorrecte de mise en forme peut facilement provoquer un dépassement de mémoire tampon.Sinon, utilisez scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l ou fgets.

wscanf est une version à caractère élargi d' scanf; l'argument d' format à wscanf est une chaîne à caractères larges.wscanf et scanf se comportent de la même si le flux est ouvert en mode ANSI.scanf ne prend pas en charge actuellement l'entrée d'un flux d'UNICODE.

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

Mappages de routines de texte générique

Routine de TCHAR.H

_UNICODE et non définis _MBCS

_MBCS défini

_UNICODE défini

_tscanf

scanf

scanf

wscanf

_tscanf_l

_scanf_l

_scanf_l

_wscanf_l

Pour plus d'informations, consultez l' Champs de spécification de format — le scanf s'exécute et le wscanf s'exécute.

Configuration requise

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 d' Windows Store .Les handles standard de flux de données associés à la console, stdin, stdout, et stderr, doivent être redirigés pour que les fonctions runtime C peuvent les utiliser dans des applications d' Windows Store .Pour des informations de compatibilité supplémentaires, consultez l' Compatibilité dans l'introduction.

Exemple

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

Équivalent .NET Framework

Voir aussi

Référence

Support à virgule flottante

E/S de flux

Paramètres régionaux

fscanf, _fscanf_l, fwscanf, _fwscanf_l

printf, _printf_l, wprintf, _wprintf_l

sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l

sscanf, _sscanf_l, swscanf, _swscanf_l