Aller au contenu principal

Affichage

la fonction printf est plus flexible. Elle permet de formater la sortie (comme afficher des variables, des entiers, des flottants, etc.). Elle n'ajoute pas de saut de ligne automatiquement à la fin, c'est au développeur de le faire.

int jour = 9;
printf("Aujourd'hui nous sommes le %d\n", jour);

Spécificateurs​

Entiers​

SpécificateursDescription
%dentier signé (base 10).
%iEquivalent à %d, pour afficher un entier signé.
%uentier non signé (base 10).
%oentier non signé en base 8 (octal).
%xentier non signé en base 16 (hexadécimal) avec des lettres minuscules (a à f).
%Xentier non signé en base 16 avec des lettres majuscules (A à F).
%ld ou %lientier signé de type long int.
%luentier non signé de type long unsigned int.
%lld ou %llientier signé de type long long int.
%lluentier non signé de type long long unsigned int.

Attention une erreur courante consiste à afficher dans le mauvais format

unsigned int nombre = 4294967291;
printf("%i", nombre);

Caractères​

  • %c : Affiche un seul caractère.
  • %s : Affiche une chaîne de caractères (terminée par \0).
char nom[] = "Jérôme";
printf("Bonjour %s\n", nom);

Nombres à virgule flottante​

SpécificateursDescription
%fnotation décimale à virgule flottante.
%enotation scientifique (forme exponentielle) avec un e minuscule.
%Enotation scientifique avec un E majuscule.
%gUtilise soit la notation décimale (%f), soit la notation scientifique (%e), selon ce qui est le plus concis.
%GComme %g, mais avec un E majuscule pour la notation scientifique.
%lfAffiche un double en notation décimale.
%LfAffiche un long double en notation décimale.

Spécificateurs pour les pointeurs​

  • %p : Affiche l'adresse d'un pointeur en notation hexadécimale.

Comment afficher le caractère % si celui ci sert de spécificateur de format. Il faut utiliser %%

Caractères spéciaux​

SpécificateursDescription
\0caractère null de fin de chaine
\ttabulation horizontale
\nnouvelle ligne (lf : line feed)
\rretour chariot (cr: carriage return)
\fsaut de page (ff: form feed)
\vtabulation verticale
\asignal d'alerte (bell)
\bretour arrière (backspace)
\\caractère antislash \
"caractère guillemet "
'caractère apostrophe '

Origine des caractères \r et \n​

Les caractères Carriage Return (CR) et Line Feed(LF) proviennent de l'époque des machines à écrire et des téléscripteurs. Ils sont directement liés aux mouvements de la tête d'impression.

Sur les machines à écrire, un "carriage return" signifie ramener le chariot d'écriture (où se trouve le papier) au début de la ligne, sans changer de ligne.

Sur une machine à écrire ou un téléscripteur, un "line feed" signifie faire avancer le papier d'une ligne vers le haut, permettant de commencer une nouvelle ligne tout en gardant le même positionnement horizontal.

Les téléscripteurs (comme ceux de la norme Teletype) utilisaient souvent ces deux commandes ensemble pour former une nouvelle ligne complète :

CR+LF : Ramener le curseur au début de la ligne (CR) et passer à la ligne suivante (LF). Cela a été adopté comme norme dans certains systèmes dont Windows à ces début.

Unix, conçu pour simplifier, a décidé de ne garder que LF pour représenter une fin de ligne.