Writefile()/readfile

imanedaoudi Messages postés 82 Date d'inscription vendredi 20 mai 2005 Statut Membre Dernière intervention 24 octobre 2005 - 9 juin 2005 à 23:22
cs_leuk Messages postés 13 Date d'inscription lundi 1 octobre 2007 Statut Membre Dernière intervention 5 décembre 2007 - 8 oct. 2007 à 11:26
Salut,
je veux enregistrer des float dans un fichier txt, et les lire apres, j'ai utilisé la fonction suivante pour écrire et lire les 5 premiers float,
problèmes
1. lorsque j'ouvre mon fichier à la main je trouve des caractéres bizare et nom pas des float
2.de meme pour la lecture je récupére des float différentes de celles écrites.
Remarque :
le (vect[i].x) est un réel.
help please!!!!
void base::WriteRealDataFile(char *pf)
{
HANDLE hSrc, hDest;
DWORD dwRead, dwWritten;
float g[1000];
hSrc = CreateFile(pf, GENERIC_WRITE, 0, NULL,OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);


if (hSrc == INVALID_HANDLE_VALUE)
{cout << "Unable to open " <<endl;getch();exit(1);}


else {
for(int i=0;i<Dimbase;i++)


{ cout << "Le fichier est ouvert pour ecriture " <<endl;
WriteFile(hSrc,&(vect[i].x),Dimbase, &dwWritten, NULL);

}

}
CloseHandle(hSrc);
//=======================lecture===========

hSrc = CreateFile(pf, GENERIC_READ, 0, NULL,OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
ReadFile(hSrc, g, 10000, &dwRead, NULL);
CloseHandle(hSrc);
for(int i=0;i<5;i++)
cout <<g[i];

4 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
10 juin 2005 à 00:10
C'est normal, c'est parce que les float sont codés en binaire et non en
décimal. Si tu écris directement, ca sera illisible dans ton fichier.
Par contre, si tu relis dans ton fichier, tu obtiendras sans problème
le float que tu y as écrit.

Si tu veux que ton fichier soit lisible, il faut que tu transformes ton float en chaine avant, avec sprintf par exemple.

Je vois que tu utilises cout, dans ce cas pourquoi ne pas utiliser
aussi les flots pour écrire er lire dans le fichier: ca sera beaucoup
plus simple ici:

ofstream out;

out << (vect[i].x);

...

in >> (vect[i].x);
0
imanedaoudi Messages postés 82 Date d'inscription vendredi 20 mai 2005 Statut Membre Dernière intervention 24 octobre 2005
10 juin 2005 à 02:13
il parait que cela va marcher, comment faire pour supprimer mes fichier une fois terminer !!
merci
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
10 juin 2005 à 10:16
En C tu as la fonction remove
0
cs_leuk Messages postés 13 Date d'inscription lundi 1 octobre 2007 Statut Membre Dernière intervention 5 décembre 2007
8 oct. 2007 à 11:26
Bonjour,
je souhaite écrire des données puis  les lire dans un fichier texte en utilisant les fonctions CreateFile(), WriteFile(), ReadFile() et CloseHandle(). Merci de me montrer un exemple svp. mon ide c'est visual c++.
Merci d'avance
0
Rejoignez-nous