Vous êtes ici :
Accueil Cours Programmations Débuter en programmation avec le langage C Les fonctions d'entrées-sorties classiques

Débuter en programmation avec le langage C : Les fonctions d'entrées-sorties classiques

 
Il s'agit des fonctions de la librairie standard "stdio.h" utilisées avec les unités classiques d'entrées-sorties, qui sont respectivement le clavier et l'écran. Sur certains compilateurs, l'appel à la librairie stdio.h par la directive au préprocesseur  #include <stdio.h> n'est pas nécessaire pour utiliser les fonctions printf et scanf.

 

La fonction d'écriture « printf »

La fonction printf est une fonction d'impression formatée, ce qui signifie que les données sont converties selon le format particulier choisi. Sa syntaxe est  
 
                             printf("chaîne de contrôle ",expression1, ..., expressionN);  
 
La chaîne de contrôle contient le texte à afficher et les spécifications de format correspondant à chaque expression de la liste. Les spécifications de format ont pour but d'annoncer le format des données à visualiser. Elles sont introduites par le caractère %, suivi d'un caractère désignant le format d'impression. Les formats
d'impression en C sont les suivants :


%d   int  décimale signée
%ld   long int   décimale signée
%u  unsigned int décimale non signée
%lu  unsigned long int décimale non signée
%o  unsigned int octale non signée
%lo  unsigned long int octale non signée
%x  unsigned int hexadécimale non signée
%lx  unsigned long int hexadécimale non signée
%f  double décimale virgule fixe
%lf  long double décimale virgule fixe
%e  double décimale notation exponentielle
%le  long double décimale notation exponentielle
%g  double décimale, représentation la plus courte parmi %f et %e
%lg  long double décimale, représentation la plus courte parmi %lf et %le
%c  unsigned char caractère
%s  char*  chaîne de caractères
   

En plus du caractère donnant le type des données, on peut éventuellement préciser certains paramètres du format d'impression, qui sont spécifiés entre le % et le caractère de conversion dans l'ordre suivant :  
 

  •   largeur minimale du champ d'impression : %10d spécifie qu'au moins 10 caractères seront réservés pour imprimer l'entier. Par défaut, la donnée sera cadrée à droite du champ. Le signe - avant le format signifie  que la donnée sera cadrée à gauche du champ (%-10d).  
  •   précision : %.12f signifie qu'un flottant sera imprimé avec 12 chiffres après la virgule. De même %10.2f  signifie que l'on réserve 12 caractères (incluant le caractère .) pour imprimer le flottant et que 2 d'entre eux  sont destinés aux chiffres après la virgule. Lorsque la précision n'est pas spécifiée, elle correspond par défaut à 6 chiffres après la virgule. Pour une chaîne de caractères, la précision correspond au nombre de caractères imprimés : %30.4s signifie que l'on réserve un champ de 30 caractères pour imprimer la chaîne mais que seulement les 4 premiers caractères seront imprimés (suivis de 26 blancs).  

 
 La fonction de saisie « scanf »

La fonction scanf permet de saisir des données au clavier et de les stocker aux adresses spécifiées par les arguments de la fonctions.  
 

                                scanf("chaîne de contrôle",argument1,...,argumentN)
 

La chaîne de contrôle indique le format dans lequel les données lues sont converties. Elle ne contient pas d'autres caractères (notamment pas de \n). Comme pour printf, les conversions de format sont spécifiées par un caractère précédé du signe %. Les formats valides pour la fonction scanf diffèrent légèrement de ceux de la fonction printf et sont les suivants :

 

%d int décimale signée
%hd short int décimale signée
%ld long int décimale signée
%u unsigned int décimale non signée
%hu unsigned short int décimale non signée
%lu unsigned long int décimale non signée
%o int octale
%ho short int octale
%lo long int octale
%x int hexadécimale
%hx short int hexadécimale
%lx long int hexadécimale
%f float flottante virgule fixe
%lf double flottante virgule fixe
%Lf long double flottante virgule fixe
%e float flottante notation exponentielle
%le double flottante notation exponentielle
%Le long double flottante notation exponentielle
%g float flottante virgule fixe ou notation exponentielle
%lg double flottante virgule fixe ou notation exponentielle
%Lg long double flottante virgule fixe ou notation exponentielle
%c char caractère
%s char* chaîne de caractères
 
Les données à entrer au clavier doivent être séparées par des blancs ou des <RETURN> sauf s'il s'agit de caractères. On peut toutefois fixer le nombre de caractères de la donnée à lire. Par exemple %3s pour une chaîne de 3 caractères, %10d pour un entier qui s'étend sur 10 chiffres, signe inclus.
 
Exemple :  
 
 

#include <stdio.h> 
int main() 
{ 
  int i; 
  printf("entrez un entier sous forme hexadecimale i = "); 
  scanf("%x",&i); 
  printf("i = %d\n",i); 
} 

 

 
Si on entre au clavier la valeur 1a, le programme affiche i = 26.
 

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();  
 
Lorsqu'elle détecte la fin de fichier, elle retourne l'entier EOF (End Of File), valeur définie dans la librairie stdio.h. En général, la constante EOF vaut -1.  
 
La fonction putchar écrit caractere sur la sortie standard :  

                                                  putchar(caractere);
 
Elle retourne un int correspondant à l'entier lu ou à la constante EOF en cas d'erreur.
 
 
 




Vous êtes ici :
Accueil Cours Programmations Débuter en programmation avec le langage C Les fonctions d'entrées-sorties classiques