printf

Tous les corrigés sont compilés avec Visual C++ et non pas Borland C++

Utilisation simple

Les spécifications de format ne sont pas présentes, ou sont réduite à la seule indication du type de la variable dont on veut afficher la valeur.

Pas de variable, seulement un message à afficher.

Une ou plusieurs variables

Voici le programme qui suit pas à pas les spécifications de l'énoncé :

#include <stdio.h>

void main()
{
	char c1='a',c2='k',c3='w';
	short petitCourt=3,court=150,grandCourt=23784,courtNegatif=-2753;
	int petitEntier=3,entier=150,grandEntier=785824,entierNegatif=-7842;
	float petitFlottant=5e-5f,flottant=18.68725f,grandFlottant=-8796782;
	double petitDouble=5e-5,Double=18.68725,grandDouble=-879678248386;
	char texte[]="Exercice";

	printf("Caractere c1 avec %%f      :\t%f\n",c1);
	printf("Caractere c1 avec %%d      :\t%d\n",c1);
	printf("Caractere c1 avec %%c      :\t%c\n",c1);
	printf("\n");
	printf("les 3 dans le meme printf :\t%f\t%d\t%c\n",c1,c1,c1);
	printf("\n");

	printf("short petitCourt avec %%c  :\t%c\n",petitCourt);
	printf("short court avec %%c       :\t%c\n",court);
	printf("short petitCourt avec %%d  :\t%d\n",petitCourt);
	printf("short grandCourt avec %%d  :\t%d\n",grandCourt);
	printf("short grandCourt avec %%hd :\t%hd\n",grandCourt);
	printf("short grandCourt avec %%f  :\t%f\n",grandCourt);
	printf("short grandCourt avec %%lf :\t%lf\n",grandCourt);
	printf("\n");

	printf("int entierNegatif avec %%d :\t%d\n",entierNegatif);
	printf("int entierNegatif avec %%u :\t%u\n",entierNegatif);
	printf("int grandEntier avec %%d   :\t%d\n",grandEntier);
	printf("int grandEntier avec %%f   :\t%f\n",grandEntier);
	printf("\n");

	printf("float flottant avec %%c    :\t%c\n",flottant);
	printf("float flottant avec %%d    :\t%d\n",flottant);
	printf("float flottant avec %%f    :\t%f\n",flottant);
	printf("\n");
	printf("les 3 dans le meme printf :\t%c\t%d\t%f\n",flottant,flottant,flottant);
	printf("\n");

	printf("double Double avec %%d     :\t%d\n",Double);
	printf("double Double avec %%f     :\t%f\n",Double);
	printf("double Double avec %%lf    :\t%lf\n",Double);
	printf("\n");
	printf("les 3 dans le meme printf :\t%d\t%f\t%lf\n",Double,Double,Double);
	printf("\n");
	printf("double petitDouble avec %%f:\t%lf\n",petitDouble);
	printf("double petitDouble avec %%e:\t%e\n",petitDouble);
	printf("double petitDouble avec %%g:\t%g\n",petitDouble);
	printf("double Double avec %%g     :\t%g\n",Double);
	printf("\n");

	printf("chaine texte avec %%s      :\t%s\n",texte);
	printf("chaine texte avec %%c      :\t%c\n",texte);
	printf("\n");

	printf("ad double &Double avec %%d :\t%d\n",&Double);
	printf("ad double &Double avec %%p :\t%p\n",&Double);
}

Voici le résultat de son exécution :

Caractere c1 avec %f      :     -0.000000
Caractere c1 avec %d      :     97
Caractere c1 avec %c      :     a

les 3 dans le meme printf :     0.000000        97      ö

short petitCourt avec %c  :     ?
short court avec %c       :     û
short petitCourt avec %d  :     3
short grandCourt avec %d  :     23784
short grandCourt avec %hd :     23784
short grandCourt avec %f  :     -0.000000
short grandCourt avec %lf :     -0.000000

int entierNegatif avec %d :     -7842
int entierNegatif avec %u :     4294959454
int grandEntier avec %d   :     785824
int grandEntier avec %f   :     -0.000000

float flottant avec %c    :
float flottant avec %d    :     -1610612736
float flottant avec %f    :     18.687250

les 3 dans le meme printf :             1077063663      18.687250

double Double avec %d     :     -1649267442
double Double avec %f     :     18.687250
double Double avec %lf    :     18.687250

les 3 dans le meme printf :     -1649267442     -0.000000       -0.000000

double petitDouble avec %f:     0.000050
double petitDouble avec %e:     5.000000e-005
double petitDouble avec %g:     5e-005
double Double avec %g     :     18.6872

chaine texte avec %s      :     Exercice
chaine texte avec %c      :     $

ad double &Double avec %d :     1244984
ad double &Double avec %p :     0012FF38
Press any key to continue

Quelques commentaires :

Utilisation un peu plus avancée

Voici le programme qui utilise quelques mises en forme de l'affichage :

#include <stdio.h>

void main()
{
	char c1='a',c2='k',c3='w';
	short petitCourt=3,court=150,grandCourt=23784,courtNegatif=-2753;
	int petitEntier=3,entier=150,grandEntier=785824,entierNegatif=-7842;
	float petitFlottant=5e-5f,flottant=18.68725f,grandFlottant=-8796782;
	double petitDouble=5e-5,Double=18.68725,grandDouble=-879678248386;
	char texte[]="Exercice";

	printf("Caracteres c1,c2,c3 avec %%10c      : %10c%10c%10c\n",c1,c2,c3);
	printf("Caracteres c1,c2,c3 avec %%10.5c    : %10.5c%10.5c%10.5c\n",c1,c2,c3);
	printf("Chaine texte avec %%3s              : %3s\n",texte);
	printf("Les 3 short avec %%10hd             : %10hd%10hd%10hd\n",
		petitCourt,court,grandCourt);
	printf("Les 3 short avec %%hd               : %hd%hd%hd\n",
		petitCourt,court,grandCourt);
	printf("Les 3 short avec %%hd et espaces    : %hd %hd %hd\n",
		petitCourt,court,grandCourt);
	printf("Les 3 short avec %%hd et tabulations: %hd\t%hd\t%hd\n",
		petitCourt,court,grandCourt);
	printf("Les 3 double avec %%10.5f           : %10.5f%10.5f%10.5f\n",
		petitDouble,Double,grandDouble);
	printf("Les 3 double avec %%10.5g           : %10.5g%10.5g%10.5g\n",
		petitDouble,Double,grandDouble);
	printf("Les 3 double avec %%10.5e           : %10.5e%10.5e%10.5e\n",
		petitDouble,Double,grandDouble);
	printf("Les 3 double avec %%10.1e           : %10.1e%10.1e%10.1e\n",
		petitDouble,Double,grandDouble);
	printf("Les 3 double avec %%10f             : %10f%10f%10f\n",
		petitDouble,Double,grandDouble);
	printf("Les 3 double avec %%10g             : %10g%10g%10g\n",
		petitDouble,Double,grandDouble);
}

Ce programme donne à l'exécution :

Caracteres c1,c2,c3 avec %10c      :          a         k         w
Caracteres c1,c2,c3 avec %10.5c    :          a         k         w
Chaine texte avec %3s              : Exercice
Les 3 short avec %10hd             :          3       150     23784
Les 3 short avec %hd               : 315023784
Les 3 short avec %hd et espaces    : 3 150 23784
Les 3 short avec %hd et tabulations: 3  150     23784
Les 3 double avec %10.5f           :    0.00005  18.68725-879678248386.00000
Les 3 double avec %10.5g           :     5e-005    18.687-8.7968e+011
Les 3 double avec %10.5e           : 5.00000e-0051.86872e+001-8.79678e+011
Les 3 double avec %10.1e           :   5.0e-005  1.9e+001 -8.8e+011
Les 3 double avec %10f             :   0.000050 18.687250-879678248386.000000
Les 3 double avec %10g             :     5e-005   18.6872-8.79678e+011
Press any key to continue

On voit ainsi quelques possibilités permises par la fonction printf