Login
Mot de passe
identifiants perdus

Informations
  • Auteur(s) : idriss
  • Catégorie : C et C++
  • Moyenne : 16/20
  • Date de création : 10/08/2010
  • Date mise à jour : 06/09/2012

  • Licence : Contrat Creative Commons

print Version imprimable

Entrées et sorties formatées en C

Introduction :

Les fonctions printf() et scanf() (et dérivées*) de la bibliothèque d'entrée/sortie standard (stdio.h) sont dites fonctions d'entrées et sorties formatées. En effet, il existe pour ces fonctions un certain nombre de formats d'entrée/sortie pour les expressions fournies en paramètres. Par ailleurs, il existe également pour ces fonctions, comme pour d'autres**, un certain nombre de carractères spéciaux encore appelés séquences d'échappement.


* : Les fonctions "dérivées" sont les fonctions sprintf () , sscanf () , fprintf () , fscanf () , ...
** : Il existe d'autres fonctions d'entrée/sortie standard (non-formatées cette fois) à l'exemple de getchar() , putchar() , ...

Dans cette rubrique, nous allons faire une liste des principaux carractères d'échappement et formats utilisés par ces fonctions.

I - Les séquences d'échappement (caractères spéciaux) avec printf :

 

Séquence d'échappement

Effet

 \n

saut de ligne

 \t

tabulation horizontale

 \v

tabulation verticale

\b

placement du curseur

\r

retour chariot (carriage return)

\f

saut de page

\a

signal sonore

\\

antislash

 \"

double quote (guillemet)

%%

Caractère "%"

 

II - Les formats de sortie avec printf :

Format

Type de donnée

%d, %i

nombre entier décimal

%u

nombre entier non signé (unsigned)

%o

nombre entier octal

%x

nombre entier hexadécimal (minuscule)

%X

nombre entier hexadécimal (majuscule)

%c

caractère ASCII (type char)

%f

nombre à virgule flottante

%e, %E

nombre à virgule flottante au format exponentiel

%g, %G

nombre au format %f ou %e (lorsque l'exposant est inférieur à -4)

%a, %A

nombre de type double affiché en notation hexadécimale (avec les lettres abcdef en minuscules pour %a et en majuscules pour %A)

%s

chaîne de caractères

%p

pointeur

%n

pointeur (nombre de caractères déjà donnés


Remarque :

Selon la man page de printf :

- Les formats %d à %X concernent les variables de type int. Pour les variables de type short, il faut ajouter un h après le % (exemple : %hd) et pour les variables de type long, il faut ajouter, il faut ajouter un l après le % (exemple : %ld).

- Les formats %f à %LG concernent les variables de type float. Pour les variables de type double, il faut ajouter un l après le % (exemple : %lf).

Il se peut toutefois que vous ayez un Warning du genre "ISO C90 does not support the `%lf' printf format". En effet, les formats %lf (nombre à virgule de type double), %hhd (char signé) et %hhu (char non signé) n'existent qu'en C99.

Les formats de saisie avec scanf :

Format

Type de donnée

%d

entier décimal de type int

%i

nombre entier de type int

%hd

entier décimal de type short

%ld

entier décimal de type long

%u

entier décimal de type int non signé (unsigned)

%hu

entier décimal de type short non signé (unsigned short)

%lu

entier décimal de type long non signé (unsigned long)

%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

%hx

entier hexadécimal de type short

%lx

entier hexadécimal de type long

%c

caractère ASCII (type char)

%f

nombre à virgule flottante de type float

%lf

nombre à virgule flottante de type double

%e, %E

nombre à virgule flottante au format exponentiel de type float

%le, %LE

nombre à virgule flottante au format exponentiel de type double

%g, %G

nombre à virgule flottante au format décimal ou exponentiel (lorsque l'exposant est inférieur à -4) de type float

%lg, %LG

nombre à virgule flottante au format décimal ou exponentiel (lorsque l’exposant est inférieur à -4) de type double

%s

chaîne de caractères

%p

pointeur

%n

aucune donnée utilisateur (montre le nombre de caractères déjà lus)



Vous devez être connectés pour poster un commentaire ou une note ...

30402 visiteurs au total - mentions légales - [nous contacter]