Champs de spécification de format : fonctions scanf et wscanfFormat Specification Fields: scanf and wscanf Functions

Les informations ici s'appliquent à l'ensemble de la famille de fonctions scanf, y compris les versions sécurisées, et décrivent les symboles utilisés pour indiquer aux fonctions scanf comment analyser le flux d'entrée, tel que le flux d'entrée stdin pour scanf, en valeurs insérées dans les variables de programme.The information here applies to the entire scanf family of functions, including the secure versions and describes the symbols used to tell the scanf functions how to parse the input stream, such as the input stream stdin for scanf, into values that are inserted into program variables.

Une spécification de format se présente sous la forme suivante :A format specification has the following form:

%[*] [largeur] [{h | l | ll | I64 | L}]type%[*] [width] [{h | l | ll | I64 | L}]type

L'argument format spécifie l'interprétation de l'entrée et peut contenir un ou plusieurs des éléments suivants :The format argument specifies the interpretation of the input and can contain one or more of the following:

  • Espaces blancs : espace (' '), tabulation ('\t') ou saut de ligne ('\n').White-space characters: blank (' '); tab ('\t'); or newline ('\n'). Un espace blanc oblige scanf à lire, mais pas à stocker, tous les espaces blancs consécutifs dans l’entrée jusqu’au caractère suivant autre qu’un espace blanc.A white-space character causes scanf to read, but not store, all consecutive white-space characters in the input up to the next non-white-space character. Un espace blanc au format correspond à tout nombre (y compris 0) et à toute combinaison d'espaces blancs dans l'entrée.One white-space character in the format matches any number (including 0) and combination of white-space characters in the input.

  • Caractères autres que des espaces blancs, sauf le symbole de pourcentage (%).Non-white-space characters, except for the percent sign (%). Un caractère autre qu’un espace blanc oblige scanf à lire, mais pas à stocker, un caractère correspondant autre qu’un espace blanc.A non-white-space character causes scanf to read, but not store, a matching non-white-space character. Si le caractère suivant dans le flux d'entrée ne correspond pas, scanf se termine.If the next character in the input stream does not match, scanf terminates.

  • Spécifications de format, introduites par le symbole de pourcentage (%).Format specifications, introduced by the percent sign (%). Une spécification de format oblige scanf à lire et à convertir les caractères de l'entrée en valeurs d'un type spécifié.A format specification causes scanf to read and convert characters in the input into values of a specified type. La valeur est affectée à un argument dans la liste d'arguments.The value is assigned to an argument in the argument list.

Le format est lu de gauche à droite.The format is read from left to right. Les caractères en dehors des spécifications de format doivent correspondre à la séquence de caractères dans le flux d'entrée ; les caractères correspondants dans le flux d'entrée sont analysés mais pas stockés.Characters outside format specifications are expected to match the sequence of characters in the input stream; the matching characters in the input stream are scanned but not stored. Si un caractère du flux d'entrée est en conflit avec la spécification de format, scanf se termine, et le caractère est conservé dans le flux d'entrée comme s'il n'avait pas été lu.If a character in the input stream conflicts with the format specification, scanf terminates, and the character is left in the input stream as if it had not been read.

Lorsque la première spécification de format est détectée, la valeur du premier champ d'entrée est convertie en fonction de cette spécification et stockée dans l'emplacement spécifié par le premier argument.When the first format specification is encountered, the value of the first input field is converted according to this specification and stored in the location that is specified by the first argument. La deuxième spécification de format entraîne la conversion et le stockage du deuxième champ d'entrée dans le deuxième argument, et ainsi de suite jusqu'à la fin de la chaîne de format.The second format specification causes the second input field to be converted and stored in the second argument, and so on through the end of the format string.

Un champ d'entrée est défini comme étant tous les caractères jusqu'au premier espace blanc (espace, tabulation ou saut de ligne) ou jusqu'au premier caractère qui ne peut pas être converti en fonction de la spécification de format, ou jusqu'à ce que la largeur du champ (si spécifiée) soit atteinte.An input field is defined as all characters up to the first white-space character (space, tab, or newline), or up to the first character that cannot be converted according to the format specification, or until the field width (if specified) is reached. S'il y a trop d'arguments pour les spécifications données, les arguments supplémentaires sont évalués mais ignorés.If there are too many arguments for the given specifications, the extra arguments are evaluated but ignored. Les résultats sont imprévisibles si le nombre d'arguments est insuffisant pour la spécification de format.The results are unpredictable if there are not enough arguments for the format specification.

Chaque champ de la spécification de format est un caractère unique ou un nombre indiquant une option de mise en forme spécifique.Each field of the format specification is a single character or a number signifying a particular format option. Le caractère type, qui apparaît après le dernier champ de format facultatif, détermine si le champ d'entrée est interprété comme un caractère, une chaîne ou un nombre.The type character, which appears after the last optional format field, determines whether the input field is interpreted as a character, a string, or a number.

La spécification de format la plus simple contient uniquement le symbole de pourcentage et un caractère type (par exemple, %s).The simplest format specification contains only the percent sign and a type character (for example, %s). Si un symbole de pourcentage (%) est suivi d'un caractère qui n'a aucune signification en tant que caractère de contrôle de format, ce caractère et les caractères suivants (jusqu'au symbole de pourcentage suivant) sont traités comme une séquence ordinaire de caractères, c'est-à-dire, une séquence de caractères qui doivent correspondre à l'entrée.If a percent sign (%) is followed by a character that has no meaning as a format-control character, that character and the following characters (up to the next percent sign) are treated as an ordinary sequence of characters, that is, a sequence of characters that must match the input. Par exemple, pour spécifier qu'un symbole de pourcentage doit être inséré, utilisez %%.For example, to specify that a percent-sign character is to be input, use %%.

Un astérisque (*) suivant du symbole de pourcentage supprime l'attribution du champ d'entrée suivant, qui est interprété comme un champ du type spécifié.An asterisk (*) following the percent sign suppresses assignment of the next input field, which is interpreted as a field of the specified type. Le champ est analysé mais pas stocké.The field is scanned but not stored.

Les versions sécurisées (celles avec le suffixe _s) de la famille de fonctions scanf requièrent qu'un paramètre de taille de mémoire tampon soit passé immédiatement après chaque paramètre de type c, C, s, S ou [.The secure versions (those with the _s suffix) of the scanf family of functions require that a buffer size parameter be passed immediately following each parameter of type c, C, s, S or [. Pour plus d’informations sur les versions sécurisées de la famille scanf de fonctions, consultez scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l.For more information on the secure versions of the scanf family of functions, see scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l.

Voir aussiSee also

Spécification de largeur scanfscanf Width Specification
Caractères du champ de type scanfscanf Type Field Characters
scanf, _scanf_l, wscanf, _wscanf_lscanf, _scanf_l, wscanf, _wscanf_l
scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_lscanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l