lire un nombre en notation scientifique dans un fichier

lire un nombre en notation scientifique dans un fichier - C - Programmation

Marsh Posté le 03-08-2009 à 11:54:02    

Bonjour
 
Je fait appel à vous car je n'arrive pas à lire un nombre dans un fichier :??: . Je m'explique :  
 
Le fichier contient des lignes de cette façon (X,Y,Z et poids) :  


307.20      292.80      0.00      4.93E-06


 
Donc j'ouvre mon fichier avec un fopen puis je lis chaque ligne avec un :

Code :
  1. fscanf(pfResultats,"%f\t%f\%f\t%f;",&fPositionX, &fPositionY, &fPositionZ, &fPoids);


 
Seulement voilà : si X, Y et Z sont bien reconnu le poids, à cause de la notation scientifique n'est pas reconnu!
Comment puis-je faire pour arriver à lire cette quatrième colonne?  
 
Merci de votre aide. :jap:  
 
Cordialement

Reply

Marsh Posté le 03-08-2009 à 11:54:02   

Reply

Marsh Posté le 03-08-2009 à 13:34:10    

%e de tête

Reply

Marsh Posté le 03-08-2009 à 14:05:53    

C'est équivalent. Tu un problème ailleurs.
 

Code :
  1. #include <stdio.h>
  2. int main(int argc, char** argv)
  3. {
  4.         int i;
  5.         for (i = 1; i < argc; ++i) {
  6.                 float f;
  7.                 if (sscanf(argv[i], "%e", &f) == 1) {
  8.                         printf("%s -> %f\n", argv[i], f);
  9.                 }
  10.         }
  11.         return 0;
  12. }


 

$ ./a.out 307.20      292.80      0.00      4.93E-06
307.20 -> 307.200012
292.80 -> 292.799988
0.00 -> 0.000000
4.93E-06 -> 0.000005

Reply

Marsh Posté le 03-08-2009 à 14:21:17    

En effet, ça marche.
 
Merci pour tout

Reply

Marsh Posté le 03-08-2009 à 14:28:43    

Nan mais justement, je voulais dire que %f ou %e, ça lit pareil.

Reply

Marsh Posté le 03-08-2009 à 14:34:12    

En effet, mon erreur devait venir d'ailleurs car maintenant (après quelques modifications) que je mette %e ou %f ça marche! :??: .
 
Ayant trifouillé un peu n'importe comment dans le code je ne saurais pas vous dire ce que j'ai changé pour que ça marche. Mais merci pour vos réponses (en plus je connaissais pas le %e)

Reply

Marsh Posté le 03-08-2009 à 14:44:16    

Taz a écrit :

Nan mais justement, je voulais dire que %f ou %e, ça lit pareil.

 

De meme que @g, %E et %F.  Pour des doubles il faut les formes avec l (tandis que pour printf, il y a une difference entre les %e, %E, %f, %g et %G mais que les formes avec l sont equivalentes aux formes sans).


Message édité par Un Programmeur le 03-08-2009 à 14:44:26

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

Marsh Posté le 03-08-2009 à 21:16:06    

Regarde bien le retour de *scanf dans tous les cas.

Reply

Marsh Posté le 03-08-2009 à 23:48:07    

Duc_onlajoy a écrit :


Code :
  1. fscanf(pfResultats,"%f\t%f\t%f\t%f;",&fPositionX, &fPositionY, &fPositionZ, &fPoids);




Pas sûr que ça change grand chose, mais il manque le "t" en gras


---------------
If you think it could look good, then I guess it should
Reply

Sujets relatifs:

Leave a Replay

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