Chapitre 2
Chapitre 2
Chapitre 2
I. Introduction
Les fonctions d’E/S standards sont les fonctions assurant l’échange d’information entre la
mémoire centrale et les périphériques standard, principalement le clavier et l’écran.
Dans ce chapitre, nous allons examiner les fonctions permettant de lire les données à partir du
clavier et d’afficher les résultats sur l’écran.
scanf("<format>",<AdrVar1>,<AdrVar2>, ...)
"<format>" : représente le format de lecture des données. C’est une chaîne de caractères (donc
entouré par des guillemets). Elle est composée de spécificateurs qui indique le type de
variables qu’on va lire. Chaque spécificateur correspond à un type de variable et doit donc
apparaître dans le même ordre que la variable dans la liste. Les principaux spécificateurs de
format sont résumé dans le tableau suivant.
spécificateur signification
%d ou %x ou %o Pour une variable de type int (décimale,
hexadécimale , octale)
%u Pour une variable de type unsigned int
%h Pour une variable de type short int
%f Pour une variable de type float
%lf Pour une variable de type double
%e Pour une variable de type exponentielle
%c Pour une variable de type char
%s Pour une variable de type texte
La fonction scanf reçoit ses données à partir du fichier d'entrée standard stdin (par
défaut le clavier).
La chaîne de format détermine comment les données reçues doivent être interprétées.
Les données reçues correctement sont mémorisées successivement aux adresses
indiquées par <AdrVar1>,... .
L'adresse d'une variable est indiquée par le nom de la variable précédé du signe &.
1
Cours programmation 1 : langage C Chapitre 2 : Les fonctions d’E/S standards
Exemple :
Remarque:
On peut placer la longueur de la variable entre le signe % et la lettre spécificateur. Par
exemple « %3d » indique qu’on va lire un entier de 3 chiffres et le reste des chiffres
sont ignorés. scanf("%3d",&i) ;
Si l’on sépare les spécificateurs de format par des espaces ou par des virgules alors les
valeurs à lire seront séparées par les mêmes séparateurs.
La fonction gets() lit une ligne de caractères de stdin et la copie à l'adresse indiquée par la
chaîne. Le retour à la ligne final est remplacé par le symbole de fin de chaîne '\0'.
char c; char c;
printf("ENTRER UN CARACTERE: "); printf("ENTRER UN CARACTERE: ");
scanf("%c",&c); c = getchar();
Non formatée, la fonction getchar est moins gourmande en place mémoire que scanf. Il vaut
mieux l'utiliser quand cela est possible; getchar utilise le flux d'entrée exactement comme
scanf.
La fonction getch, appartenat à la bibliothèque conio.h permet la saisie clavier d'un caractère
alphanumérique, sans écho écran. La saisie s'arrête dés que le caractère a été frappé.
La fonction getch n'est pas définie dans la norme ANSI mais elle peut exister dans la
bibliothèque d'autres compilateurs. On peut utiliser getch de deux façons:
On peut utiliser getch de deux façons:
2
Cours programmation 1 : langage C Chapitre 2 : Les fonctions d’E/S standards
Exemple:
char c;
printf(" entrer un caractère(attention pas de return)");
c=getch();
printf("\n voici ce caractère: %c", c);
Les parenthèse vides de getch() signifient qu'aucun paramètre n'est passé à cette fonction par
le programme.
La fonction printf est utilisée pour transférer du texte, des valeurs de variables ou des
résultats d'expressions vers le fichier de sortie standard stdout (par défaut l'écran).
syntaxe :
printf("<format>",<Expr1>,<Expr2>, ... )
La partie "<format>" est en fait une chaîne de caractères qui peut contenir:
du texte
des séquences d'échappement
des spécificateurs de format
Les spécificateurs de format indiquent la manière dont les valeurs des expressions
<Expr1..N> sont imprimées.
La partie "<format>" contient exactement un spécificateur de format pour chaque
expression <Expr1..N>.
Les spécificateurs de format commencent toujours par le symbole % et se terminent par
un ou deux caractères qui indiquent le format d'impression.
Les spécificateurs de format impliquent une conversion d'un nombre en chaîne de
caractères. Ils sont encore appelés symboles de conversion.
Exemples :
int i =65 ;
printf(" le caractère %d est %c" ,i,i) ;
Cette suite d’instructions affiche sur l’écran : le caractère 65 est A
%d est remplacé par la valeur numérique de i càd 65
%c est remplacé par la valeur alphanumérique (ASCII) de i càd A
int A = 1234;
int B = 567;
printf("%i fois %i est %li\n", A, B, (long)A*B);
Cette suite d’instructions affiche sur l’écran : 1234 fois 567 est 699678
3
Cours programmation 1 : langage C Chapitre 2 : Les fonctions d’E/S standards
Les arguments de putchar sont par définition du type int et toutes les valeurs traitées par
putchar (même celles du type char) sont d'abord converties en int.
Exemples :
Char C ;
C=’A’
putchar( C );
char A = 225;
putchar('x'); /* afficher la lettre x */
putchar('?'); /* afficher le symbole ? */
putchar('\n'); /* retour à la ligne */
putchar(65); /* afficher le symbole avec le code 65 (ASCII: 'A') */
putchar(A); /* afficher la lettre avec le code 225 (ASCII: 'ß') */
Remarque :
Il vaut mieux utiliser puts et putchar ci cela est possible, ces fonctions, non formatées, sont
d’exécution plus rapide et nécessitent moins de place en mémoire lors de leur chargement.
Exercices :
1. Ecrire un programme qui calcule la soustraction de deux nombres et affiche le résultat sur
l’écran.
2. Ecrire un programme qui permet la saisie d’un nombre entier et l’affiche en hexadécimal
sur l’écran