Champs de spécification de format : fonctions de scanf et de wscanf
Les informations ici s'appliquent à scanf la famille entière des fonctions, notamment les versions sécurisées et décrivent les symboles utilisés pour demander aux fonctions d' scanf comment analyser le flux d'entrée, tel que le flux d'entrée stdin pour scanf, dans les valeurs qui sont insérées dans les variables de programme.
Une spécification de format a la forme suivante :
%[*] [largeur] [{h | l | ll | I64 | l}]type
L'argument d' format spécifie la traduction de l'entrée et peut contenir un ou plusieurs des éléments suivants :
Espaces blancs : l'espace ("") ; onglet ("\ t ") ; ou saut de ligne ("\ n ").Un espace blanc provoque scanf à lire, mais pas le magasin, tous les espaces blancs consécutifs dans l'entrée jusqu ' à le caractère suivant autres que des espaces blancs.Un espace blanc au format correspond à n'importe quel nombre (0) et combinaison des espaces blancs dans l'entrée.
caractères autres que des espaces blancs, à l'exception de le signe de pourcentage (%).Un caractère autre qu'un espace blanc provoque scanf à lire, mais pas le magasin, un caractère correspondant autres que des espaces blancs.Si le caractère suivant du flux d'entrée n'est pas conforme à ces critères, scanf se termine.
Spécifications de format, introduites par le signe de pourcentage (%).Une spécification de format entraîne lire et convertir scanf des caractères dans l'entrée en valeurs d'un type spécifié.La valeur assignée à un argument dans la liste d'arguments.
le format est lu de gauche à droite.Il est recommandé que des caractères en dehors de spécifications de format correspondent à la séquence de caractères du flux d'entrée ; les caractères correspondants dans le flux d'entrée sont analysées mais non stocké.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 laissé dans le flux d'entrée comme s'il n'avait pas été lu.
Lorsque la première spécification de format est produite, la valeur du premier champ d'entrée est convertie en fonction de cette spécification et stockée à l'emplacement spécifié par le premier argument.La deuxième spécification de format entraîne le deuxième champ d'entrée à convertir et être stockées dans le deuxième argument, et ainsi de suite à la fin de la chaîne de format.
Un champ d'entrée est défini comme tous les caractères jusqu ' à le premier caractère d'espace blanc (espace, onglet, ou saut de ligne), ou jusqu ' à le premier caractère qui ne peut pas être converti en fonction de la spécification du format, ou jusqu'à ce que la largeur du champ (si spécifié) est atteint.s'il y a trop d'arguments pour les caractéristiques données, les arguments supplémentaires sont évalués mais ignorés.Les résultats sont imprévisibles s'il n'y a pas assez d'arguments pour la spécification de format.
Chaque champ de la spécification de format est un caractère unique ou un nombre c'est-à-dire une option de mise en forme particulière.Le caractère d' type , qui apparaît après le dernier champ facultatif de format, détermine si le champ d'entrée est interprète comme un caractère, chaîne, ou nombre.
La spécification de format la plus simple contient uniquement le signe de pourcentage et un caractère d' type (par exemple, %s).Si un signe de pourcentage (%) est suivi d'un caractère qui n'a aucune signification comme caractère de format-contrôle, ce caractère et les caractères suivants (jusqu ' à le signe de pourcentage suivant) sont traités comme une séquence ordinaire de caractères, c. autrement dit., une séquence de caractères qui doivent correspondre à l'entrée.Par exemple, pour spécifier qu'un signe de pourcentage doit être d'entrée, utilisez %%.
Un astérisque (*) après le signe de pourcentage supprime l'assignation du champ d'entrée suivant, qui est interprète comme un champ du type spécifié.Le champ est analysée mais non stocké.
Les versions sécurisées (celles par le suffixe d' _s ) de la famille d' scanf des fonctions exigent qu'un paramètre de taille de mémoire tampon est passé immédiatement après chaque paramètre de type c, C, s, S ou [.Pour plus d'informations sur les versions sécurisées de la famille d' scanf des fonctions, consultez scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l.
Voir aussi
Référence
spécification de la largeur de scanf
type de caractères scanf de champ