Programmer en langage C
6
© Éditions Eyrolles
1.4 Pour écrire des informations : la fonction printf
L’instruction :
printf ("Bonjour\n") ;
appelle en fait une fonction prédéfinie (fournie avec le langage, et donc que vous n’avez pas à
écrire vous-même) nommée printf . Ici, cette fonction reçoit un argument qui est :
"Bonjour\n"
Les guillemets servent à délimiter une « chaîne de caractères » (suite de caractères). La notation \n est conventionnelle : elle représente un caractère de fin de ligne, c’est-à-dire un caractère qui, lorsqu’il est envoyé à l’écran, provoque le passage à la ligne suivante. Nous verrons
que, de manière générale, le langage C prévoit une notation de ce type (\ suivi d’un caractère)
pour un certain nombre de caractères dits « de contrôle », c’est-à-dire ne possédant pas de
graphisme particulier.
Notez que, apparemment, bien que printf soit une fonction, nous n’utilisons pas sa valeur.
Nous aurons l’occasion de revenir sur ce point, propre au langage C. Pour l’instant, admettez
que nous pouvons, en C, utiliser une fonction comme ce que d’autres langages nomment une
« procédure » ou un « sous-programme ».
L’instruction suivante :
printf ("Je vais vous calculer %d racines carrées\n", NFOIS) ;
ressemble à la précédente avec cette différence qu’ici la fonction printf reçoit deux arguments. Pour comprendre son fonctionnement, il faut savoir qu’en fait le premier argument de
printf est ce que l’on nomme un « format » ; il s’agit d’une sorte de guide qui précise comment afficher les informations qui sont fournies par les arguments suivants (le cas échéant).
Ici, on demande à printf d’afficher suivant ce format :
"Je vais vous calculer %d racines carrées\n"
la valeur de NFOIS , c’est-à-dire, la valeur 5 .
Ce format est, comme précédemment, une chaîne de caractères. Toutefois, vous constatez la
présence d’un caractère % . Celui-ci signifie que le caractère suivant est, non plus du texte à
afficher tel quel, mais un « code de format ». Ce dernier précise qu’il faut considérer la valeur
reçue (en argument suivant, donc ici 5 ) comme un entier et l’afficher en décimal. Notez bien
que tout ce qui, dans le format, n’est pas un code de format, est affiché tel quel ; il en va ainsi
du texte « racines carrées\n » .
Il peut paraître surprenant d’avoir à spécifier à nouveau dans le code format que NFOIS(5) est
un entier alors que l’on pourrait penser que le compilateur est bien capable de s’en apercevoir
(quoiqu’il ne puisse pas deviner que nous voulons l’écrire en décimal et non pas, par exemple,
en hexadécimal). Nous aurons l’occasion de revenir sur ce phénomène dont l’explication réside
Delannoy Livre.book Page 6 Mercredi, 6. mai 2009 4:26 16
6
© Éditions Eyrolles
1.4 Pour écrire des informations : la fonction printf
L’instruction :
printf ("Bonjour\n") ;
appelle en fait une fonction prédéfinie (fournie avec le langage, et donc que vous n’avez pas à
écrire vous-même) nommée printf . Ici, cette fonction reçoit un argument qui est :
"Bonjour\n"
Les guillemets servent à délimiter une « chaîne de caractères » (suite de caractères). La notation \n est conventionnelle : elle représente un caractère de fin de ligne, c’est-à-dire un caractère qui, lorsqu’il est envoyé à l’écran, provoque le passage à la ligne suivante. Nous verrons
que, de manière générale, le langage C prévoit une notation de ce type (\ suivi d’un caractère)
pour un certain nombre de caractères dits « de contrôle », c’est-à-dire ne possédant pas de
graphisme particulier.
Notez que, apparemment, bien que printf soit une fonction, nous n’utilisons pas sa valeur.
Nous aurons l’occasion de revenir sur ce point, propre au langage C. Pour l’instant, admettez
que nous pouvons, en C, utiliser une fonction comme ce que d’autres langages nomment une
« procédure » ou un « sous-programme ».
L’instruction suivante :
printf ("Je vais vous calculer %d racines carrées\n", NFOIS) ;
ressemble à la précédente avec cette différence qu’ici la fonction printf reçoit deux arguments. Pour comprendre son fonctionnement, il faut savoir qu’en fait le premier argument de
printf est ce que l’on nomme un « format » ; il s’agit d’une sorte de guide qui précise comment afficher les informations qui sont fournies par les arguments suivants (le cas échéant).
Ici, on demande à printf d’afficher suivant ce format :
"Je vais vous calculer %d racines carrées\n"
la valeur de NFOIS , c’est-à-dire, la valeur 5 .
Ce format est, comme précédemment, une chaîne de caractères. Toutefois, vous constatez la
présence d’un caractère % . Celui-ci signifie que le caractère suivant est, non plus du texte à
afficher tel quel, mais un « code de format ». Ce dernier précise qu’il faut considérer la valeur
reçue (en argument suivant, donc ici 5 ) comme un entier et l’afficher en décimal. Notez bien
que tout ce qui, dans le format, n’est pas un code de format, est affiché tel quel ; il en va ainsi
du texte « racines carrées\n » .
Il peut paraître surprenant d’avoir à spécifier à nouveau dans le code format que NFOIS(5) est
un entier alors que l’on pourrait penser que le compilateur est bien capable de s’en apercevoir
(quoiqu’il ne puisse pas deviner que nous voulons l’écrire en décimal et non pas, par exemple,
en hexadécimal). Nous aurons l’occasion de revenir sur ce phénomène dont l’explication réside
Delannoy Livre.book Page 6 Mercredi, 6. mai 2009 4:26 16
