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é |
---|
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
Consultez également des méthodes d' Parse, telles que System::Double::Parse.
Voir aussi
Référence
fscanf, _fscanf_l, fwscanf, _fwscanf_l
printf, _printf_l, wprintf, _wprintf_l