Vous êtes sur la page 1sur 5

Page - 1

Chapitre 4 : Les entré es sorties


Table of Contents
Introduction............................................................................................................................................. 1
I. Ecriture formatée des données ....................................................................................................... 1
II. Lecture formatée de données avec scanf ....................................................................................... 3
III. Impression et lecture de caractères ............................................................................................ 5

Introduction
La bibliothèque standard <stdio.h> contient un ensemble de fonctions qui assurent la
communication de la machine avec le monde extérieur : printf(), scanf(), putchar(), getchar()…

I. Ecriture formatée des données


• La fonction printf() est utilisée pour transférer du texte, des valeurs de variables ou des
résultats d’expression vers l’écran.
• Syntaxe : printf (‘’<format>‘’,<exp1>,<exp2>,….<expN>);
o Format : format de représentation : c’est une chaîne de caractères qui peut contenir :
 Du texte
 Des séquences d’échappement
 Des spécificateurs de format
o Ce format indique la manière dont les valeurs des expressions <exp1>, <exp2>,…,
<expN> seront imprimées
o <exp1>, <exp2>,…, <expN> : des variables et expressions dont les valeurs sont à
présenter.
• Exemples de spécificateurs de format pour printf :
(http://man7.org/linux/man-pages/man3/printf.3.html )
Format Données
%d ou %i Entier relatif (int)
%ld Long int
%u Nombre entier non signé (unsigned)
%lu unsigned long int
%o Entier exprimé en octal
%lo unsigned long int en octal
%x Entier exprimé en hexadécimal
%lx unsigned long int
%c Caractère (char)
%f float ou double (vu la transformation
systématique float-> double)
%Lf long double
%e, %E Nombre à virgule flottante en format
exponentiel

© Ichrak Amdouni Programmation Procédurale et Langage C Eniso 2018-2019


Page - 2

%Le Long double


%s Chaîne de caractères
Exemples :
Instructions Résultats
int i =5 ; 5
printf(’’%d’’,i);
printf(’’La somme de 2+3 est %d’’, la somme de 2+3 est 5
2+3) ;
int i =5 ; 1000 plus 5 donne 1005
printf(’’1000 plus %d donne %d’’, i,
i+1000);
int a = 5, b = 10 ; la somme de 5+10 est 15
int s ;
s = a+b ;
printf(’’La somme de %d et %d est
%d’’, a,b,s) ;

• Si on veut fixer le nombre de chiffres affichés : %nb d (nb : nombre minimal de caractères
pour l’affichage : spécifie qu’au moins nb caractères seront réservés pour imprimer l’entier).
• Si nb est supérieur au nombre de caractères, il y aura ajout de blancs.
• Exemple 1 : printf (‘’%3d’’, N) ;
o Si N = 20 -> -20 (‘-‘ représente un espace)
o Si N = 3 -> --3
o Si N = 2358 -> 2358
o Si N = -5200 –> -5200
• Exemple 2 : printf (‘’%f’’, x) ;
o Si x = 1.2345 -> 1.234500  par ce que par défaut, l’affichage se fait avec six chiffres
après la virgule.
o x = 12.3456789 -> 12.345679 (fait l’arrondissement)
o x = 1.2345 E5 -> 123450.000000
• Exemple 3 : float x = 123.4 ; printf (‘’%7.3f’’, x) ; -> l’affichage sera : 123.400 (nombre écrit
avec 7 caractères dont 3 après la virgule)
• Exemple 4 : int x = 1.2345; printf (‘’%e’’, x) ; -> l’affichage sera : 1.234500 e+00 :
o par défaut un chiffre avant la virgule, six chiffres après la virgule
o Si x = 123.45 -> 1.234500 e+02.
• Exemples :

© Ichrak Amdouni Programmation Procédurale et Langage C Eniso 2018-2019


Page - 3

Variables Instructions Résultats


int i= 23674; printf("%d,%u,%o,%x",i,i,i,i); 23674,23674,56172,5c7a

int j= -23674; printf("%d,%u,%o,%x",j,j,j,j); -23674,4294943622,


37777721606,ffffa386
double x=179e-2 ; printf("%f,%e\n",x,x); 1.790000,1.790000e+00
printf("%.2f,%.2e\n",x,x); 1.79,1.79e+00
printf("%.5f,%.5e\n",x,x); 1.79000,1.79000e+00
char c = 'A'; printf("%c \t %d\n",c,c); A 65

char *chaine = printf("%s \t chaine de caracteres


"chaine de %.10s\n",chaine,chaine); chaine de
caracteres";

Remarque:

Si on veut afficher un caractère spécial dans la chaine avec printf sans que ça soit interprété par le
compilateur en tant que caractère spécial, on doit le déspécialiser :
- printf("on affiche : \' %% \\n ") ; -> donne : on affiche ‘ % \n

 on a inséré un % avant le %, et un \ avant le \n

II. Lecture formatée de données avec scanf


• La fonction scanf permet de saisir des valeurs tapées au clavier pendant l’exécution du
programme.
• Exemple :
o scanf("valeurs %d et %d",&i,&j); attend, au clavier, une phrase de la
forme valeurs 10 et 31 et mettra la valeur 10 dans la variable i et la valeur 31 dans la
variable j.
• Syntaxe : Scanf(‘format’’’,<adr_var1> ,<adr_var2> , <adr_var3>,…..,<adr_var_N> ) ;
o Format : format de lecture des données : détermine la façon avec laquelle seront
interprétées les données reçues.
o <adr_var1>, <adr_var2>,…..,<adr_varN>: adresses des variables auxquelles les
données seront attribuées.
 Les données reçues correctement seront mémorisées successivement aux
adresses indiquées par <adr_var1>, <adr_var2>,….., <adr_varN>:
 L’adresse d’une variable est indiquée par le nom de cette variable précédée
par le signe &.
 Exemple : scanf (‘’%d’’, &x) ; l’opérateur d’adresse & appliqué au nom de la
variable informe la fonction scanf de l’emplacement de stockage de la valeur
saisie.
• On peut toutefois fixer le nombre de caractères de la donnée à lire.
o Par exemple %3s pour une chaîne de 3 caractères,
o %10d pour un entier qui s’étend sur 10 caractères, signe inclus.

© Ichrak Amdouni Programmation Procédurale et Langage C Eniso 2018-2019


Page - 4

• Exemple : Dans l’exemple suivant, si on entre au clavier la valeur 1a, le programme affiche i =
26

void main()
{
int i;
printf("entrez un entier sous forme hexadecimale i = ");
scanf("%x",&i);
printf("i = %d, %x\n",i,i); // i = 26, 1a
}

Figure 1 Format de saisie pour la fonction scanf

Remarque:

Si la chaîne de format contient aussi d'autres caractères que des signes d'espacement, alors ces
symboles doivent être introduits exactement dans l'ordre indiqué.

Exemple :
int JOUR, MOIS, ANNEE;
scanf("%i/%i/%i", &JOUR, &MOIS, &ANNEE);

© Ichrak Amdouni Programmation Procédurale et Langage C Eniso 2018-2019


Page - 5

 Vos entrées doivent être comme: 12/7/1989, ou 22/05/01989


 Par contre, les entrées suivantes sont fausses : 12 7 1989, 22 5 1989

III. Impression et lecture de caractères


• Les fonctions getchar et putchar permettent respectivement de lire et d’imprimer des
caractères. Il s’agit de fonctions d’entrées-sorties non formatées.
• La fonction getchar retourne un int correspondant au caractère lu. Pour mettre le caractère
lu dans une variable caractere, on écrit :
caractere = getchar();

Exemple:

#include <stdio.h>

void main() {
char car ;
printf("entrer un caractère") ;
car = getchar() ;/* lecture d’un caractère et affectation du
caractère à la variable car*/
}
• La fonction putchar affiche un caractère sur l’écran. La donnée à afficher est écrite sous
forme de paramètre entre les parenthèses de la macro.
• Exemple :

#include <stdio.h>

void main() {

char car ;
printf("entrer un caractère") ;
car = getchar() ;
printf ("le caractère saisi est : ") ;
putchar(car) ;
}

© Ichrak Amdouni Programmation Procédurale et Langage C Eniso 2018-2019

Vous aimerez peut-être aussi