Fonction de bibliothèque C - scanf ()

La description

La fonction de bibliothèque C int scanf(const char *format, ...) lit l'entrée formatée de stdin.

Déclaration

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

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

Paramètres

  • format - Ceci est la chaîne C qui contient un ou plusieurs des éléments suivants -

    Caractère d'espacement, caractère non blanc et spécificateurs de format . Un spécificateur de format sera comme[=%[*][width][modifiers]type=] comme expliqué ci-dessous -

N ° Sr. Argument et description
1

*

C'est un astérisque de départ facultatif qui indique que les données doivent être lues à partir du flux mais ignorées, c'est-à-dire qu'elles ne sont pas stockées dans l'argument correspondant.

2

width

Ceci spécifie le nombre maximum de caractères à lire dans l'opération de lecture en cours.

3

modifiers

Spécifie une taille différente de int (dans le cas de d, i et n), unsigned int (dans le cas de o, u et x) ou float (dans le cas de e, f et g) pour les données pointées par le argument supplémentaire correspondant: h: short int (pour d, i et n), ou unsigned short int (pour o, u et x) l: long int (pour d, i et n), ou unsigned long int (pour o, u et x), ou double (pour e, f et g) L: long double (pour e, f et g)

4

type

Un caractère spécifiant le type de données à lire et la manière dont elles devraient être lues. Voir le tableau suivant.

spécificateurs de type fscanf

type Contribution admissible Type d'argument
c Caractère unique: lit le caractère suivant. Si une largeur différente de 1 est spécifiée, la fonction lit les caractères de largeur et les stocke dans les emplacements successifs du tableau passé en argument. Aucun caractère nul n'est ajouté à la fin. char *
Entier décimal: nombre éventuellement précédé d'un signe + ou - int *
e, E, f, g, G Virgule flottante: nombre décimal contenant un point décimal, éventuellement précédé d'un signe + ou - et éventuellement suivi du caractère e ou E et d'un nombre décimal. Deux exemples d'entrées valides sont -732.103 et 7.12e4 flotteur *
o Entier octal: int *
s Chaîne de caractères. Cela lira les caractères suivants jusqu'à ce qu'un espace soit trouvé (les caractères d'espacement sont considérés comme vides, nouvelle ligne et tabulation). char *
u Entier décimal non signé. entier non signé *
x, X Entier hexadécimal int *
  • additional arguments- Selon la chaîne de format, la fonction peut s'attendre à une séquence d'arguments supplémentaires, chacun contenant une valeur à insérer au lieu de chaque% -tag spécifié dans le paramètre de format, le cas échéant. Il doit y avoir le même nombre de ces arguments que le nombre de% -tags qui attendent une valeur.

Valeur de retour

En cas de succès, la fonction renvoie le nombre d'éléments de la liste d'arguments lus avec succès. Si une erreur de lecture se produit ou que la fin du fichier est atteinte pendant la lecture, l'indicateur approprié est défini (feof ou ferror) et, si l'un ou l'autre se produit avant que les données ne puissent être lues avec succès, EOF est renvoyé.

Exemple

L'exemple suivant montre l'utilisation de la fonction scanf ().

#include <stdio.h>

int main () {
   char str1[20], str2[30];

   printf("Enter name: ");
   scanf("%s", str1);

   printf("Enter your website name: ");
   scanf("%s", str2);

   printf("Entered Name: %s\n", str1);
   printf("Entered Website:%s", str2);
   
   return(0);
}

Compilons et exécutons le programme ci-dessus qui produira le résultat suivant en mode interactif -

Enter name: admin
Enter your website name: www.tutorialspoint.com

Entered Name: admin
Entered Website: www.tutorialspoint.com