Definir dans un printf le format à l'aide d'un #define
Bonjour,
Je souhaiterais dans un printf définir le nombre de décimales affichées pour un float à partir d'un #define
Par exemple, remplacer
Code:
printf("Nombre %.2f", nombre);
par
Code:
1 2 3
| #define NB_DECIMAL 2
printf("Nombre %.NB_DECIMALf", nombre); |
Bien sur ce code ne fonctionne pas, mais y-a-t'il une possibilité de coder quelque chose d'équivalent?
Merci
Re: Definir dans un printf le format à l'aide d'un #define
Bonjour,
Citation:
Envoyé par Rei Angelus
Bien sur ce code ne fonctionne pas, mais y-a-t'il une possibilité de coder quelque chose d'équivalent?
La substitution des macro ne s'effecue pas dans les chaînes de cractères. Par contre, pour concaténer plusieurs chaînes de caractères, tu peux faire :
Code:
1 2 3
| #define NB_DECIMAL "2"
printf("Nombre %."NB_DECIMALf, nombre); |
Voir te servir de la commande ## si tu souhaite garder NB_DECIMAL en chiffre.
Re: Definir dans un printf le format à l'aide d'un #define
Citation:
Envoyé par gege2061
Bonjour,
Citation:
Envoyé par Rei Angelus
Bien sur ce code ne fonctionne pas, mais y-a-t'il une possibilité de coder quelque chose d'équivalent?
La substitution des macro ne s'effecue pas dans les chaînes de cractères. Par contre, pour concaténer plusieurs chaînes de caractères, tu peux faire :
Code:
1 2 3
| #define NB_DECIMAL "2"
printf("Nombre %."NB_DECIMALf, nombre); |
Voir te servir de la commande ## si tu souhaite garder NB_DECIMAL en chiffre.
Je pense qu'il faut mettre le f aussi entre guillemets:
Code:
1 2
|
printf("Nombre %."NB_DECIMAL"f\n",nombre); |
Jc
Re: Definir dans un printf le format à l'aide d'un #define
Citation:
Envoyé par fearyourself
Je pense qu'il faut mettre le f aussi entre guillemets:
effectivement c'est un oubli :merci:
Re: Definir dans un printf le format à l'aide d'un #define
Citation:
Envoyé par gege2061
Voir te servir de la commande ## si tu souhaite garder NB_DECIMAL en chiffre.
Je suis un peu léger sur # et ##. Cela sert à qoui et comment ça fonctionne ?
Re: Definir dans un printf le format à l'aide d'un #define
Citation:
Envoyé par Rei Angelus
Citation:
Envoyé par gege2061
Voir te servir de la commande ## si tu souhaite garder NB_DECIMAL en chiffre.
Je suis un peu léger sur # et ##. Cela sert à qoui et comment ça fonctionne ?
Citation:
Envoyé par Médinoc
Et c'est un seul # pour convertir un argument de macro en chaîne. ##, c'est pour concaténér directement.