scanf caractères de champ de type

Les informations suivantes s'appliquent à la famille de fonctions scanf , y compris les versions sécurisées telles que scanf_s.

Le caractère type est le seul champ de format obligatoire. Il apparaît après les champs de format facultatifs. Le caractère type détermine si l'argument associé est interprété comme un caractère, une chaîne ou un nombre.

type Caractères pour scanf les fonctions

Caractère Type d'entrée attendu Type d'argument Argument de taille dans la version sécurisée ?
c Caractère. Quand il est utilisé avec les fonctions scanf , spécifie un caractère codé sur un octet. Quand il est utilisé avec les fonctions wscanf , spécifie un caractère large. Les espaces blancs qui sont habituellement ignorés, sont lus quand c est spécifié. Contrairement aux autres champs de type, le spécificateur de largeur de champ indique le nombre exact de caractères, et non le nombre maximal. Pour lire le prochain caractère codé sur un octet qui n’est pas un espace, utilisez %1s. Pour lire le prochain caractère large qui n’est pas un espace, utilisez %1ws. Pointeur vers char en cas d'utilisation avec les fonctions scanf , pointeur vers wchar_t en cas d'utilisation avec les fonctions wscanf . Obligatoire. La taille n’inclut pas d’espace pour un terminateur Null.
C Caractère de taille inverse. Quand il est utilisé avec les fonctions scanf , spécifie un caractère large. Quand il est utilisé avec les fonctions wscanf , spécifie un caractère codé sur un octet. Les espaces blancs qui sont habituellement ignorés, sont lus quand C est spécifié. Contrairement aux autres champs de type, le spécificateur de largeur de champ indique le nombre exact de caractères, et non le nombre maximal. Pour lire le prochain caractère codé sur un octet qui n’est pas un espace, utilisez %1s. Pour lire le prochain caractère large qui n’est pas un espace, utilisez %1ws. Pointeur vers wchar_t en cas d'utilisation avec les fonctions scanf , pointeur vers char en cas d'utilisation avec les fonctions wscanf . Obligatoire. L’argument Taille n’inclut pas d’espace pour un terminateur Null.
d Entier décimal. Pointeur vers int. Nombre
i Entier. Hexadécimal, si la chaîne d'entrée commence par "0x" ou "0X", octal si la chaîne commence par "0", sinon décimal. Pointeur vers int. Nombre
o Entier octal. Pointeur vers int. Nombre
p Adresse du pointeur en notation hexadécimale. Le nombre maximal de chiffres lus dépend de la taille d’un pointeur (32 bits ou 64 bits), qui dépend de l’architecture de l’ordinateur. "0x" ou "0X" sont acceptés en tant que préfixes. Pointeur vers void*. Nombre
u Entier décimal non signé. Pointeur vers unsigned int. Nombre
x Entier hexadécimal. Pointeur vers int. Nombre
e, E, f, F, g, G Valeur à virgule flottante composée d’un signe facultatif (+ ou -), d’une série d’un ou de plusieurs chiffres décimaux contenant la virgule décimale et d’un exposant facultatif ("e" ou "E") suivi d’une valeur entière éventuellement signée. Pointeur vers float. Nombre
a, A Valeur à virgule flottante composée d’une série d’un ou plusieurs chiffres hexadécimaux contenant une virgule décimale facultative et un exposant ("p" ou "P"), suivie d’une valeur décimale. Pointeur vers float. Nombre
n Aucune entrée lue à partir du flux ou de la mémoire tampon. Pointeur vers int, où sont stockés un certain nombre de caractères correctement lus à partir du flux ou de la mémoire tampon jusqu'à ce stade dans l'appel des fonctions scanf ou wscanf . Nombre
s Chaîne, jusqu'au premier espace blanc (espace, tabulation ou nouvelle ligne). Pour lire les chaînes non délimitées par des caractères d’espace, utilisez un ensemble de crochets ([ ]), comme indiqué dans scanf La spécification de largeur. Quand il est utilisé avec les fonctions scanf , signifie un tableau de caractères codés sur un octet. Quand il est utilisé avec les fonctions wscanf , signifie un tableau de caractères larges. Dans les deux cas, le tableau de caractères doit être suffisamment grand pour le champ d'entrée, ainsi que le caractère Null de fin, qui est automatiquement ajouté. Obligatoire. La taille inclut un espace pour un terminateur Null.
S Chaîne de caractères de taille inverse, jusqu'au premier espace blanc (espace, tabulation ou nouvelle ligne). Pour lire les chaînes non délimitées par des caractères d’espace, utilisez un ensemble de crochets ([ ]), comme indiqué dans scanf La spécification de largeur. Quand il est utilisé avec les fonctions scanf, signifie un tableau de caractères codés sur un octet. Quand il est utilisé avec les fonctions wscanf, signifie un tableau de caractères larges. Dans les deux cas, le tableau de caractères doit être suffisamment grand pour le champ d'entrée, ainsi que le caractère Null de fin, qui est automatiquement ajouté. Obligatoire. La taille inclut un espace pour un terminateur Null.

Les arguments de taille, si nécessaire, doivent être transmis dans la liste des paramètres immédiatement après l’argument auquel ils s’appliquent. Par exemple, le code suivant :

char string1[11], string2[9];
scanf_s("%10s %8s", string1, 11, string2, 9);

lit une chaîne dont la longueur maximale est 10 dans string1, et une chaîne dont la longueur maximale est 8 dans string2. Il doit y avoir au moins une taille de mémoire tampon de plus qu'indiqué dans les spécifications de largeur, car l'espace doit être réservé pour le terminateur Null.

La chaîne de format peut gérer l'entrée codée sur un octet ou à caractère large, même si la version du caractère codé sur un octet ou la version des caractères larges de la fonction est utilisée. Ainsi, pour lire des caractères codés sur un octet ou des caractères larges avec les fonctions scanf et wscanf , utilisez les spécificateurs de format comme suit.

Pour lire un caractère Utilisez cette fonction Avec ces spécificateurs de format
octet unique fonctionsscanf c, hc ou hC
octet unique fonctionswscanf C, hc ou hC
larges fonctionswscanf c, lc ou lC
larges fonctionsscanf C, lc ou lC

Pour analyser des chaînes avec les fonctions scanf et wscanf , utilisez le tableau ci-dessus en vous servant des spécificateurs de type de format s et S à la place de c et C.

Voir aussi

scanf, _scanf_l, wscanf, _wscanf_l