Fichiers sequenciels/turbo c++ 2.0

Jbx2001 - 8 août 2001 à 19:08
 ols - 9 août 2001 à 12:48
J'ai un probléme:j'aimerai lire un fichier contenant des caractéres et des nombres de types flottants.
Dans un fichier,j'ai noté différentes coordonnées XYZ,de cette maniére:

X:1.23 Y:3.34 Z:0.00
X:-0.50 Y:23.6 Z:12.3
...

J'aimerai en retirer les coordonnées afin de les placer dans un tableau.Je sais construire un tableau et y placer des variables mais je ne vois pas comment sortir les flottants du fichier(en respectant leurs types).Je pense qu'il faut utiliser fgetc ou fread ou fscanf mais je ne sais pas comment.
Voila "a peu prés" ce que doit donner mon programme:

#include <stdio.h>

void main (void)
{
FILE *fichier;
float flottantx,flottanty,flottantz;

fichier=fopen ("XYZ.txt","r+");

/* Voila la partie qui me manque:

Scanage du fichier -> trouve "X:" ->place 1.23 dans flottantx -> continue le scanage -> trouve "Y:" ->place 3.34 dans flottanty ->continue le scanage -> trouve "Z:" -> place 0.00 dans flottantz-> ect...

*/

/*Ensuite je n'est plus qu'a l'afficher*/

printf (fichier,"%f",flottantx);
...
fclose (fichier);
}

Ce n'est peut être pas trés clair.Je debute en c++ et pouvoir réaliser cette manip me permetterait de continuer mon prog (et pas de glander pour le reste des vacances).

A tchao et merci à tous ceux qui m'aideront (ou auront essayé!).

1 réponse

2 possibilités:

1° tu gardes ton fichier tel quel et tu découpe ta chaine à l'aide de strtok ensuite tu scannes les chaines avec sscanf

2° ou alors, (plus simple, je crois) tu modifie ton fichier en un truc du genre:

avant:
X:1.23 Y:3.34 Z:0.00
X:-0.50 Y:23.6 Z:12.3

après:
1.23 3.34 0.00
-0.50 23.6 12.3

et tu scan directement la ligne dans le fichier:
fscanf(fichier,"%f %f %f",&coordX,&coordY,&coordZ);

coord[...] étant déclaré en float
0
Rejoignez-nous