Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 2010
-
1 août 2004 à 22:57
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 2010
-
12 août 2004 à 16:34
Bonjour tout le monde!
J'ai le problème suivant:
je veux lire le fichier ci_dessous (entre les "-->", qui ne sont bien sûr pas dans le fichier), enregistré sous rouespos.txt .
voiture1,2,3,4 sont ... les noms des voitures (NAN ,sans dec'?)
les gros nombres sont les positions des 4 roues (XYZ), enregistrés en "double".
Du coup j'ai fait ce prog de lecture (cf plus bas), mais ca marche pas!!!
Je suppose que c'est encore une erreur toute con, mais j'y ai déja passé un nombre d'heures conséquent et ça m'énerve.
HELP ME PLEASE!!
Merci bcp d'avance.
PS: pour une lecture plus facile, mieux vaut faire copier-coller dans le notepad, les lignes sont un peu longues.
// vérification de certaines valeur, juste pour voir si ca a marché
cout << a<<":\n"<< Originalcar[a].roue[0].NormalPos[0] <<"\t"<< Originalcar[a].roue[0].NormalPos[1]<<"\t"<<Originalcar[a].roue[0].NormalPos[2]<<"\n\n";
}
cs_AlexMAN
Messages postés1536Date d'inscriptionsamedi 21 décembre 2002StatutMembreDernière intervention24 mai 20091 2 août 2004 à 01:22
La methode du fscanf, je trouve ca pas tres propre, mais en tt kas, tu veux recup des nombres flottants alors pkoi tu passes %d a fscanf ?? %d =>> Nombres entiers int, met %f.
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 2 août 2004 à 11:05
Oulalala mais c'est du bordel !
AlexMan> Pour récuperer un double c'est %lf (long float) et pour un float c'est %f !!!
Arnaud16022> J'ai corrigé ton programme car il y avait un certains nombre d'erreur. Regarde tes structures elles sont plutot bizarres non ?
Pas besoin de tout ce chararbia pour definir des sous-structures.
Sinon j'ai aussi modifier la syntaxe de ton fichier.
J'ai separé les valeurs par des tabulations a la place des espaces. C'est plus lisible.
Mais tu peux tres bien remettre les espaces et modifier les "\t" par des espaces.
Donne des noms explicite a tes variables pour une compréhension plus facile.
Et pas besoin d'unclure 36 bibliothèques. Avec une seule ce que tu veux faire va très bien!
Bref, je vais pas te lister toute les erreurs. Compares ton code au miens tu les verras toi meme:
#include <stdio.h>
typedef struct {
double x;
double y;
double z;
}ROUES;
typedef struct {
ROUES NumRoues[4];
char Marque[256];
} VOITURE;
int main(int argc, char* argv[])
{
FILE* fpVoiture;
VOITURE V[4];
// On ouvre le fichier en lecture et mode texte
fpVoiture = fopen("d:\\rouespos.txt","r+t");
//Les valeurs sont récuperés par syntaxe(i.e: MARQUE\nROUES.POS.X\tROUES.POS.Y\tROUES.POS.Z\n\n)
for(int i=0;i<4;i++)
{
fscanf(fpVoiture,"%s\n%lf\t%lf\t%lf\n%lf\t%lf\t%lf\n%lf\t%lf\t%lf\n%lf\t%lf\t%lf\n\n",&V[i].Marque,&V[i].NumRoues[0].x, &V[i].NumRoues[0].y, &V[i].NumRoues[0].z,
&V[i].NumRoues[1].x, &V[i].NumRoues[1].y, &V[i].NumRoues[1].z,
&V[i].NumRoues[2].x, &V[i].NumRoues[2].y, &V[i].NumRoues[2].z,
&V[i].NumRoues[3].x, &V[i].NumRoues[3].y, &V[i].NumRoues[3].z);
}
//Pour bonne verification, on affiche les 6 premieres décimales de chaque premiere nombre de la premiere ligne
for(i=0;i<4;i++)
{
printf("%s\n%0.6f\t%0.6f\t%0.6f\n\n",V[i].Marque,V[i].NumRoues[0].x,V[i].NumRoues[0].y,V[i].NumRoues[0].z);
}
return 0;
}
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 2 août 2004 à 23:37
c'est bien mieux comme ca, trop crade ton truc Arnaud16022, et passe en binaire, ca cimplifira la lecture et l'ecriture dans le fichier et pas de perte de precision
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 20102 12 août 2004 à 16:34
cOOOl
Merci bcp
La lecture/ecriture de fichiers, cŽest un des trucs qui m'embete le plus... et ca se voit...
je ne veux pas encore passer en binaire, parce que ces valeurs , je veux pouvoir les modifier manuellement,sans etre obligé de passer par un autre prog;
sinon les 2 classes c'etait fait exprès (je les ai TRES simplifiées pour poser la question)
Et desole pour le temps de reponse,mais je suis un peu con sur les bords, j'ai pose ma question 2 heures avant de partir en vacances en Autriche, que j'ai mis une semaine pour trouver un cafe internet (c'est un trou perdu au fond de la montagne...)
Merci encore
Je verrai ca dans une semaine ;)
Ciao
PS: c'etait gentil de me corriger la fonction d'affichage mais je l'ai fait a la nimp; juste pour montrer que ca marchait pas.