chalmia2s
Messages postés31Date d'inscriptionmercredi 18 février 2009StatutMembreDernière intervention15 octobre 2009
-
13 mai 2009 à 10:42
chalmia2s
Messages postés31Date d'inscriptionmercredi 18 février 2009StatutMembreDernière intervention15 octobre 2009
-
13 mai 2009 à 18:13
Bonjour,
je fais un dll en c++ avec laquelle j'aimerai lire le contenu de deux fichiers et comparer l'element se trouvant à la position 'n' du fichier 1 avec l'element n du fichier 2.
Le contenu des fichiers est sous la form:
0.3769 0.4217 0.4139 0.3477 0.3154 0.3041 0.309 0.317 0.3243 0.4351 0.3798 0.2441 0.3586 0.4465 0.3616 0.207 0.3426 0.3654 0.3633 0.3004 0.3525 0.3913 0.3899 0.3123 0.3584 0.2666 0.3556 0.3989 0.3529 0.2763 0.3749 0.4165 0.3381 0.334 0.3892 0.3621 0.3323 0.3245 .............
pour lire les fichier j'ai fait comme ça:
const char f1 =('data1.pts');
ifstream file1(&f1, ios::in);
float* dataIn1;
int sz = 20*2; // le nombre des elements du type: 0.3769
dataIn1 = new float[sz];
file1.read((char*)dataIn1, sz);
file1.close();
Je n'ai jamais raveiller tavec des I/O et là j'ai des problemes.
J'ai essayer avec:
"file1.getline((char*)dataIn1, sz)" mais ça ne marche pas aussi.
J'ai fais:
begin = file1.tellg();
file1.seekg (0, ios::end);
end = file1.tellg();
mais j'obtiens end.begin=0!!!
le programme compile mais donne des resultats faux, quand j'essaie le lire le fichier 1 par exemple pour controler son contenue j'obtiens
dataIn1[0]=-431602080
dataIn1[2]=-431602080
dataIn1[10]=-431602080
dataIn1[30]=-431602080
je ne sais pas ou est le probleme! j'espere que quelqu'un de vous aurez une idee de comment regler ça...
fregolo52
Messages postés1114Date d'inscriptionmercredi 15 juin 2011StatutMembreDernière intervention 6 mai 20214 13 mai 2009 à 12:37
je serais toi, je récupérerais le contenu du fichier octet par octet.
ces octets seraient dans un tableau de char. Dès que ton octet est un espace, c'est que les octets précédant est la représentant de ton nom en chaine de caractères.
tu fais strtod.
tu reset ta chaine et tu continues la lecture du fichier.
chalmia2s
Messages postés31Date d'inscriptionmercredi 18 février 2009StatutMembreDernière intervention15 octobre 2009 13 mai 2009 à 18:13
salut,
merci pour la réponse , j'ai fait autrement et ça a marcher:
sachant que dans chacuns des fichiers de la forme: 0.3769 0.4217 0.4139 0.3477 0.3154 0.3041 0.309 ....
il y a 20 vecteurs de dimension 3, voila:
int np;
int nbp=20;
const char *f1 = ('data1.pts');
const char *f2 = ('data2.pts');
ifstream file1(f1, ios::in);
ifstream file2(f2, ios::in);
while (np < nbp){
for (int i = 0; i < 3; i++) {
if(!(file1 >> p1[i])) return false;
if(!(file2 >> p2[i])) return false;
}
np++;
}