Limite du printf ?

Limite du printf ? - C - Programmation

Marsh Posté le 25-08-2010 à 10:36:48    

Bonjour tout le monde,
 
 
Je lance ce topic sur le printf car malgré le caractère très complet de cette fonction, je me retrouve bloqué sur un détail que je pourrais contourner sauf que je suis tétu et que je me dit qu'il existe une solution simple que je n'ai pas vu!
J'ai besoin d'avoir un contrôle totale sur le nombre que je vais écrire avec printf ( en réalité fprintf ).
En l'occurence et pour les connaisseurs du fortran (que je ne suis pas) je dois écrire un nombre au format f20.13, le 20 comprenant tout les symboles du nombre en écriture scientifique.
Pour résumer je veut mettre mon nombre sous la forme : (signe)a.bbbbbbbbbbbbbE+CC
 
Pas de problème je cours sur mon printf:

Code :
  1. printf("% 20.13e\n", toto);

 
 
Problème :  au lieu d'avoir 2 chiffre pour représenter mon exposant je me retrouve avec 3. J'ai vu ailleurs que cela dépendait de l'implémentation mais que cela veut-il dire, n'y a t'il aucun moyen d'y échapper ??
 
Merci d'avance  :o

Reply

Marsh Posté le 25-08-2010 à 10:36:48   

Reply

Marsh Posté le 25-08-2010 à 13:10:11    

La norme dit simplement que l'exposant a au moins deux chiffres et n'offre aucun moyen de controler ca.  Et je ne connais pas d'implementation qui offre une extension pour le faire.  Si tu en as besoin, passer par sprintf et manipuler le resultat est vraisemblablement plus simple que de formater toi-meme correctement un flottant.


---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

Marsh Posté le 25-08-2010 à 14:53:10    

Sinon, il reste toujours la bonne vieille méthode BoUr®¡Ñ™: au lieu de faire un printf, tu fais un sprintf dans un tableau suffisamment grand et tu enlève le/les zéros de trop à la main.
 
Edit: arf, j'ai mal lu la réponse au-dessus. Pas encore réveillé moi  :(


Message édité par tpierron le 25-08-2010 à 14:54:31
Reply

Marsh Posté le 26-08-2010 à 16:21:14    

Ok merci,
 
C'est un peu ce à quoi je m'attendais ! Il me décoit ce printf !!
 
Alors c'est parti pour le bricolage !
 
Mercii

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed