| |
Programmation C |
|
Entrée : scanf
:
La fonction scanf();
invite l'utilisateur a entrer des
données. Cela est matérialisé par un curseur (_) clignotant. La fonction
scanf();
fonctionne de manière analogue à
printf();
char Nom[50];
printf("Entrez votre nom : \t");
scanf("%s",&Nom);
affiche Entrez votre
nom
et laisse clignoter un curseur, montrant que le programme attend que
l'utilisateur entre son nom.
La chaîne de caractère tapée par l'utilisateur
suivi d'une confirmation par la touche <ENTREE> enclenche un processus
d'affectation : le & qui précède le nom de la variable (dans le cas présent,
il s'agit de la variable Nom) indique l'adresse
mémoire
de la variable. En effet, chaque variable possède une adresse mémoire, codifiant
en binaire le contenu de celle-ci. L'opérateur d'adressage (&) indique qu'il
s'agit de l'adresse mémoire de la variable Nom et non de la variable Nom.
Cependant, selon le compilateur, l'argument demandé peut varier. Miracle C
attend simplement le nom de la variable et non l'adresse mémoire.
Le premier argument indique le format du type de données saisi par
l'utilisateur. Dans le cas présent, il s'agit d'une chaîne de caractères : %s.
Nous allons dans un exemple concret, demander à l'utilisateur de saisir son
nom, puis l'afficher :
|
#include <stdio.h>
// pour printf();
#include <system.h> // pour getche();
main()
{
char Nom[255];
printf("Bonjour,\n\n");
printf("Entrez votre nom : \t");
scanf("%s",Nom);
printf("\nMerci %s, a bientot !",Nom);
getche();
}
|
ceci affiche à l'écran :

Voici toutes les spécifications de format pour
scanf();
:
|
FORMAT |
TYPE DE DONNEE |
|
%d |
entier décimal de type int |
|
%hd |
entier décimal de type short |
|
%Id |
entier décimal de type long |
|
%i |
entier de type int |
|
%u |
entier décimal de type int
non signé |
|
%hu |
entier décimal de type short
non signé |
|
%lu |
entier décimal de type long
non signé |
|
%o |
entier octal de type int |
|
%ho |
entier octal de type short |
|
%lo |
entier octal de type long |
|
%x |
entier hexadécimal de type
int |
|
%x |
entier hexadécimal de type
int |
|
%hx |
entier hexadécimal de type
short |
|
%lx |
entier hexadécimal de type
long |
|
%c |
Caractères ASCII |
|
%f |
nombre à virgule flottante |
|
%lf |
nombre à virgule flottante
de type double |
|
%e et %E |
nombre à virgule flottante
de type float |
|
%le et %LE |
nombre à virgule flottante
de type double (exponentiel) |
|
%g et %G |
nombre à virgule flottante
de type float |
|
%Lg et %LG |
nombre à virgule flottante
de type long double (exponentiel ou décimal) |
|
%s |
chaîne de caractères |
|
%p |
pointeur |
Il existe une alternative à l'instruction scanf : la fonction getche(), tout
comme il existe aussi une alternative à l'instruction printf : putchar().
Effectivement, avec scanf, l'utilisateur doit valider par <ENTREE>, alors
que la
fonction getche(); affecte un seul caractère sans avoir à valider par <ENTREE>.
putchar(); permet d'afficher un
caractère unique. Illustrons ceci par un exemple :
#include <stdio.h>
#include <system.h> // pour getche();
main()
{
char c;
printf("Entrez une lettre :\t");
c = getche();
printf("\nLe caractere que vous avez entre est : ");
putchar(c);
getche();
}
|
La fonction
getche();
ne nécessite pas, de la part de l'utilisateur, une validation par la touche
<ENTREE> et ne permet de recevoir qu'un unique caractère.
Voici le résultat de l'exemple :

|