C_facile : Introduction au langage C
Cours

Fonction de lecture : scanf ()

Définition

L'objectif de cette fonction est de récupérer des données lues au clavier dans des variables avec conversion automatique à l'aide d'un format de conversion.

SyntaxeUsage

scanf(param_1, param_3,..., param_n)

param_1 : est obligatoire c'est une chaîne de caractères qui comporte uniquement des consignes de formatage pour les autres paramètres (il y doit y en avoir au moins un).

Il faut autant de consignes que de paramètres.

Exemple

#include <stdio.h>

void main()

{

char car;

int a, b;

printf("\nentrez un caractere puis return ");

scanf("%c",&car); printf("\nle caractere tape est : %c ",car);

printf("\n\nentrez maintenant :");

printf("un entier, un espace, un caractere, un espace, un entier");

printf("\npuis return");

scanf("%d %c %d",&a,&car,&b);

printf("\nvous avez lu %d %c %d",a,car,b);

printf("\n");

}

Attention

Vous remarquez dans l'exemple que param_2, param_3,..., param_n sont des pointeurs, c'est à dire des adresses mémoires. En effet, une valeur lue au clavier doit être rangée dans une variable (réceptacle), il faut savoir où se trouve ce réceptacle dans la mémoire centrale.

Nous avons donc besoin d'avoir son adresse. Nous utilisons pour cela l'opérateur "&" devant l'identificateur de la variable pour pouvoir obtenir son adresse mémoire.

Scanf() range aux adresses qui correspondent aux arguments param_2, param_3,..., param_n des informations issues de chaînes de caractères tapées au clavier qui sont AUTOMATIQUEMENT converties aux formats spécifiés dans la partie param_1.

Scanf( ) ne peut pas afficher quelque chose, c'est le rôle de printf. La primitive scanf lit les caractères sur l'E/S standard (le clavier), puis les interprète et les convertit selon les formats spécifiés, et enfin stocke les valeurs dans les emplacements mémoires donnés par les arguments.

Chaque format de conversion est introduit par le caractère '%' qui est une séquence d'échappement. Les formats sont du même type que ceux du printf.

C'est à dire %c %d %f ou %s. Cependant, comme il ne s'agit pas d'un affichage, on ne précise donc pas autre chose que %c, %d, %f ou %s.

Méthode

Il faut impérativement mettre & devant la variable car on a besoin de l'adresse de la variable, sauf bien entendu si la variable elle-même est une adresse (une variable de type "pointeur vers", correctement initialisée).

Bien qu'il soit possible d'effectuer plusieurs lectures comme dans l'exemple avec scanf("%d %c %d",&a,&car,&b) nous préconisons plutôt d'effectuer des lectures séparées car cela évite des erreurs de saisie. La fonction "scanf" fait automatiquement un retour à la ligne après son exécution (après la saisie de l'utilisateur).

Choix Simple, structures alternatives (page suivante)Fonction d'écriture : printf () (page Précédente)
AccueilImprimer creativecommons : by-nc-ndRéalisé avec SCENARI