Partager via


Caractères du champ de type scanf

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

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

Caractères de type pour les fonctions scanf

Caractère

Type d'entrée attendu

Type d'argument

Argument de taille de la version sécurisée ?

c

Character En cas d'utilisation avec des fonctions scanf, spécifie le caractère codé sur un octet ; en cas d'utilisation avec des fonctions wscanf, spécifie le caractère large. Les espaces blancs qui sont généralement ignorés sont lus si c est spécifié. Pour lire le caractère codé sur un octet et qui n'est pas un espace blanc, utilisez %1s; pour lire le caractère large suivant et qui n'est pas un espace blanc , utilisez %1ws.

Le pointeur vers char en cas d'utilisation avec des fonctions scanf, pointeur vers wchar_t en cas d'utilisation avec des fonctions wscanf.

Obligatoire. La taille n'inclut pas l'espace occupé par une marque de fin null.

C

Caractère opposé de taille. En cas d'utilisation avec des fonctions scanf, spécifie le caractère large; en cas d'utilisation avec des fonctions wscanf, spécifie le caractère codé sur un octet. Les espaces blancs qui sont généralement ignorés sont lus si C est spécifié. Pour lire le caractère codé sur un octet et qui n'est pas un espace blanc, utilisez %1s; pour lire le caractère large suivant et qui n'est pas un espace blanc , utilisez %1ws.

Le pointeur vers wchar_t en cas d'utilisation avec des fonctions scanf, pointeur vers char en cas d'utilisation avec des fonctions wscanf.

Obligatoire. L'argument de taille n'inclut pas l'espace occupé par une marque de fin null.

d

Entier décimal.

Pointeur vers int.

Non.

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écimale.

Pointeur vers int.

Non.

o

Entier octal.

Pointeur vers int.

Non.

u

Entier décimal non signé.

Pointeur vers unsignedint.

Non.

x

Entier hexadécimal.

Pointeur vers int.

Non.

e, E, f, g, G

Valeur en virgule flottante constituée du signe facultatif (+ ou -), une série d'un ou plusieurs chiffres décimaux contenant une virgule décimale, et de l'exposant facultatif (« e » ou « E ») suivie éventuellement d'une valeur d'entier signé.

Pointeur vers float.

Non.

n

Aucune entrée lue depuis un flux de données ou une mémoire tampon.

Le pointeur vers int, dans lequel est stocké le nombre de caractères lus avec succès à partir du flux ou de la mémoire tampon jusqu'à présent dans l'appel actuel à des fonctions scanf ou wscanf.

Non.

s

Chaîne, jusqu'au premier espace blanc (espace, tabulation ou saut de ligne). Pour lire des chaînes non séparées par des espaces, utilisez un ensemble de crochets ([ ]), comme décrit dans Spécification de largeur scanf.

En cas d'utilisation avec des fonctions scanf, signifie le jeu de caractères codé sur un octet ; en cas d'utilisation avec des focntions wscanf, signifie le jeu de caractères larges. Dans l'un et l'autre cas, le tableau de caractères doit être suffisamment grand pour le champ d'entrée et le caractère NULL de fin, qui est automatiquement ajouté.

Obligatoire. La taille inclut l'espace occupé par une marque de fin null.

S

Chaîne de caractères de taille opposée, jusqu'au premier espace blanc (espace, tabulation ou saut de ligne). Pour lire des chaînes non séparées par des espaces, utilisez un ensemble de crochets ([ ]), comme décrit dans Spécification de largeur scanf.

En cas d'utilisation avec des fonctions scanf , signifie le jeu de caractères larges ; en cas d'utilisation avec des fonctions wscanf , signifie le jeu de caractères codés sur un octet. Dans l'un et l'autre cas, le tableau de caractères doit être suffisamment grand pour le champ d'entrée et le caractère NULL de fin, qui est automatiquement ajouté.

Obligatoire. La taille inclut l'espace occupé par une marque de fin null.

Les spécificateurs a et A (consultez Caractères du champ de type printf) ne sont pas disponibles avec scanf.

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

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

lit une chaîne d'une longueur maximale de 10 dans string1, et une chaîne d'une longueur maximale de 8 dans string2. Les tailles de mémoire tampon doivent contenir au moins un de plus que les spécifications de largeur dans la mesure où de l'espace doit être réservé pour la marque de fin null.

La chaîne de format peut gérer une entrée codée sur un octet ou à caractère large, et ce que l'on utilise la version à caractère codé sur un octet ou la version à caractères larges de la fonction. Par conséquent, pour lire des caractères codés sur un octet ou des caractères larges avec des fonctions scanf et des fonctions wscanf, utilisez des spécificateurs de format comme suit.

Pour lire des caractères comme

Utilisez cette fonction

Avec ces spécificateurs de format

octet unique

Fonctions scanf

c, hc ou hC

octet unique

Fonctions wscanf

C, hc ou hC

larges

Fonctions wscanf

c, lc ou lC

larges

Fonctions scanf

C, lc ou lC

Pour analyser des chaînes avec des fonctions scanf, et des fonctions wscanf, utilisez le tableau ci-dessus avec les spécificateurs types de format s et S au lieu de c et de C.

Voir aussi

Référence

scanf, _scanf_l, wscanf, _wscanf_l