English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Bibliothèque standard en C - <stdio.h>
fonction de bibliothèque C int scanf(const char *format, ...) lire l'entrée formatée à partir de l'entrée standard stdin.
voici la déclaration de la fonction scanf().
int scanf(const char *format, ...)
le format du formateur est :
[=%[*][largeur][modificateurs]type=]
voici l'explication détaillée :
paramètre | description |
---|---|
* | c'est un astérisque optionnel, indiquant que les données sont lues à partir du flux stream, mais peuvent être ignorées, c'est-à-dire qu'elles ne sont pas stockées dans les paramètres correspondants. |
largeur | cette valeur spécifie le nombre maximum de caractères à lire lors de l'opération de lecture en cours. |
modificateurs | spécifier une taille différente de l'entier (pour d, i et n), de l'entier non signé (pour o, u et x) ou du type flottant (pour e, f et g) pour les données pointées par les paramètres supplémentaires : h : court (pour d, i et n), ou court non signé (pour o, u et x) l : long (pour d, i et n), ou long non signé (pour o, u et x), ou double (pour e, f et g) L : type double long (pour e, f et g) |
type | un caractère, spécifiant le type de données à lire et la manière de lire les données. Voir le tableau suivant pour plus de détails. |
modificateur scanf :
type | une entrée qualifiée | type de paramètre |
---|---|---|
%a、%A | lire une valeur flottante (seulement C99 valide est spécifié). | float * |
%c | caractère unique : lit le prochain caractère. Si un caractère non 1 la largeur width, la fonction lit width de caractères, et les stocke dans des positions consécutives de l'array via les paramètres. Il ne sera pas ajouté de caractère de fin de chaîne à la fin. | * |
%d | entier décimal : le préfixe + ou - est optionnel. | int * |
%e、%E、%f、%F、%g、%G | nombre en virgule flottante : contient un point décimal, un signe optionnel + ou -d'une lettre optionnelle postérieure e ou E, et un nombre décimal. Deux exemples valides -732.103 et 7.12e4 | float * |
%i | lire en décimal, octal, hexadécimal. | int * |
%o | entier octal. | int * |
%s | chaîne de caractères. Cela lit les caractères consécutifs jusqu'à ce qu'il y ait un caractère d'espace (le caractère d'espace peut être un espace, un retour à la ligne ou un tabulation). | * |
㩵n | entier non signé décimal. | unsigned int * |
%x、%X | Entier hexadécimal. | int * |
%p | Lecture d'un pointeur . | |
%[] | Lecture d'un ensemble de caractères . | |
%% | Lecture % symbole. |
Si le succès, la fonction retourne le nombre de correspondances et d'attributions réussies. Si il atteint la fin du fichier ou se produit une erreur de lecture, il retourne EOF.
L'exemple suivant montre l'utilisation de la fonction scanf().
#include<stdio.h> int main(void) { int a,b,c; printf("Veuillez saisir trois nombres : "); scanf("%d%d%d",&a,&b,&c); printf("%d,%d,%d\n",a,b,c); return 0; }
Laissons compiler et exécuter le programme suivant, ce qui produira les résultats suivants en mode interactif :
Veuillez saisir trois nombres :1 2 3 1,2,3
Explication de la analyse :
#include<stdio.h> int main(void) { int a,b,c; printf("Veuillez saisir trois nombres : "); scanf("%d, %d, %d",&a,&b,&c); printf("%d, %d, %d\n",a,b,c); return 0; }
Laissons compiler et exécuter le programme suivant, ce qui produira les résultats suivants en mode interactif :
Veuillez saisir trois nombres :1, 2, 3 1, 2, 3
Attention :Lors de l'entrée, la virgule , doit être immédiatement suivie d'un nombre, sans espace entre le nombre et la virgule.
Lors de l'entrée avec %c, les espaces et les caractères d'échappement "sont considérés comme des caractères valides.
#include<stdio.h> int main(void) { char a,b,c; printf("Veuillez saisir trois caractères : "); scanf("%c%c%c",&a,&b,&c); printf("%c,%c,%c\n", a,b,c); return 0; }
Laissons compiler et exécuter le programme suivant, ce qui produira les résultats suivants en mode interactif :
$ ./a.out Veuillez saisir trois caractères : run r,u,n $ ./a.out Veuillez saisir trois caractères : r u n r, ,u
Le fichier d'exemple suivant montre la réception d'une chaîne :
#include <stdio.h> int main() { char str1[20], str2[30]; printf("Veuillez saisir le nom d'utilisateur : "); scanf("%s", str1); printf("Veuillez saisir votre site : "); scanf("%s", str2); printf("Nom d'utilisateur saisi : %s\n", str1); printf("L'adresse du site saisi : %s", str2); return(0); }
Laissons compiler et exécuter le programme suivant, ce qui produira les résultats suivants en mode interactif :
Entrez votre nom d'utilisateur : admin Entrez votre site web : fr.oldtoolbag.com Nom d'utilisateur entré : admin Site web entré : fr.oldtoolbag.com