English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriel de base en langage C

Contrôle de flux en langage C

Fonctions en C

Tableaux en C

Pointeurs en C

Chaînes en C

structure C en C

fichier C

autres C

manuel de référence C

utilisation et exemple de la fonction de bibliothèque C scanf()

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.

déclaration

voici la déclaration de la fonction scanf().

int scanf(const char *format, ...)

paramètre

  • format -- c'est une chaîne de caractères C, qui contient l'un ou plusieurs des éléments suivants :caractère d'espace, caractère non d'espace et format du formatteur.

le format du formateur est :

[=%[*][largeur][modificateurs]type=]

voici l'explication détaillée :

paramètredescription
*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.
largeurcette valeur spécifie le nombre maximum de caractères à lire lors de l'opération de lecture en cours.
modificateursspé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)
typeun 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 :

typeune entrée qualifiéetype de paramètre
%a、%A lire une valeur flottante (seulement C99 valide est spécifié).float *
%ccaractè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. *
%dentier décimal : le préfixe + ou - est optionnel.int *
%e、%E、%f、%F、%g、%Gnombre 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.12e4float *
%ilire en décimal, octal, hexadécimal.int *
%oentier octal.int *
%schaî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). *
㩵nentier non signé décimal.unsigned int *
%x、%XEntier hexadécimal.int *
%p Lecture d'un pointeur . 
%[] Lecture d'un ensemble de caractères . 
%% Lecture % symbole. 
  • Paramètres supplémentaires -- Selon les différentes chaînes de format, la fonction peut nécessiter une série de paramètres supplémentaires, chaque paramètre contient une valeur à insérer, qui remplace chaque % tag spécifié dans les paramètres de format. Le nombre de paramètres doit être égal au nombre de % tags.

Valeur de retour

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.

Exemple en ligne

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 :

  • 1、&a、&b、&c; Le & est un opérateur d'adresse, qui obtient respectivement les adresses de mémoire de ces trois variables.
  • 2、%d%d%d Il s'agit d'entrer trois valeurs numériques en format décimal. Lors de l'entrée, une ou plusieurs espaces, touches Tab ou touches d'entrée peuvent être utilisées pour séparer deux données.
Si vous utilisez , pour séparer les entrées de %d, lors de l'entrée correspondante, il est également nécessaire d'ajouter ,:
#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

Bibliothèque standard en C - <stdio.h>