Lecture fichier binaire [Résolu]

cs_benus 20 Messages postés lundi 14 mars 2005Date d'inscription 29 juillet 2009 Dernière intervention - 17 avril 2005 à 19:20 - Dernière réponse : cs_benus 20 Messages postés lundi 14 mars 2005Date d'inscription 29 juillet 2009 Dernière intervention
- 18 avril 2005 à 17:54
Bonjour;
Je travaille sur les fichiers en ce moment et j'aurai aimé savoir aprés la lecture d'un fichier avec :
FILE* file = fopen("toto.bin", "rb");
fread(&toto, sizeof(MyStruct), 1, file);

comment on faisait pour afficher le contenu du fichier
J'ai essayé avec :
cout << toto << endl;

mais il me retourne une erreure, y a t-il une fonction spéciale?
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
cs_benus 20 Messages postés lundi 14 mars 2005Date d'inscription 29 juillet 2009 Dernière intervention - 18 avril 2005 à 17:54
3
Merci
merci a tous j'ai enfin trouvé d'ou ca vennait )

Merci cs_benus 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

Commenter la réponse de cs_benus
Gendal67 627 Messages postés mercredi 16 juin 2004Date d'inscription 24 juillet 2011 Dernière intervention - 17 avril 2005 à 19:33
0
Merci
FILE* fp;if((fp fopen("toto.bin", "rb")) NULL) return false; // par exemple

char szBuffer[2048];

while(fgets(szBuffer, sizeof(szBuffer), fp))
printf("%s", szBuffer);

fclose(fp);

Je n'ai pas testé (je viens de coder ça direct) mais ça devrait marcher sans aucun problême
J'espère avoir pu t'aider!

Bonne soirée à tous !

Gendal67, Dev-C++ 4.9.9.1, J'adore cppfrance!! :-))
Commenter la réponse de Gendal67
cs_benus 20 Messages postés lundi 14 mars 2005Date d'inscription 29 juillet 2009 Dernière intervention - 17 avril 2005 à 19:48
0
Merci
Je viens d'essayer et ca n'a pas résolu mon pb ca veut donc peut etre dire que c'est l'ecriture ds le fichier qui ne fonctionne pas.
Voila le code d'insertion (si qq'un a une idee je suis preneur) :

int n;
short numtoto;
short tempFour;
char responsable[21];
float tempsCuissonTotal;
float tempsCuissonRealise;


struct MyStruct
{
short *numtoto;
short *tempFour;
char *responsable[21];
float *tempsCuissonTotal;
float *tempsCuissonRealise;
};


FILE * fp;
fp = fopen ("toto.dat", "wb"); //création et/ou ouverture

numtoto = 1;
cout << "Temperature :";
cin >> temptoto;
cout << "Responsable :";
cin >> responsable;
cout << "tempsCuissonTotal :";
cin >> tempsCuissonTotal;
cout << "tempsCuissonRealise :";
cin >> tempsCuissonRealise;


MyStruct toto;

fwrite(&toto, sizeof(MyStruct), 1, fp);
fclose (fp) ; // fermeture
Commenter la réponse de cs_benus
Jarod1980 273 Messages postés samedi 5 juillet 2003Date d'inscription 31 mars 2015 Dernière intervention - 17 avril 2005 à 20:02
0
Merci
Salut,


Je crois que le fichier que tu veux lire contient uniquement des doubles ou des intergers.


Donc pour le fichier essai de faire comme Gendal67 mais au lieu de printf("%s", szBuffer); ecris plutôt:
printf("%lf", szBuffer);

et double szBuffer[2048];
essai au sinon printf("%c", szBuffer); et: char szBuffer[2048];

Jarod_Delaware
Commenter la réponse de Jarod1980
cs_benus 20 Messages postés lundi 14 mars 2005Date d'inscription 29 juillet 2009 Dernière intervention - 17 avril 2005 à 21:05
0
Merci
Non il y a aussi des char.

Ma structure est-elle bien passée ds mon fichier?
Commenter la réponse de cs_benus
Gendal67 627 Messages postés mercredi 16 juin 2004Date d'inscription 24 juillet 2011 Dernière intervention - 18 avril 2005 à 09:59
0
Merci
benus, non....ta structure n'est pas bien passée! je te corrige tout ça :

struct MyStruct
{
short *numtoto;
short *tempFour;
char *responsable[21]; // pas de pointeur ici si tu mets[21];
float *tempsCuissonTotal;
float *tempsCuissonRealise;
};

FILE * fp;
fp = fopen ("toto.dat", "wb"); //création et/ou ouverture

MyStruct toto; // y faut le déclarer ici

numtoto = 1;
cout << "Temperature :";
cin >> &toto.temptoto; // il faut spécifier que c de lobjet toto + passage par référence
cout << "Responsable :";
cin >> toto.responsable; // pas de référence car c un char*
cout << "tempsCuissonTotal :";
cin >> &toto.tempsCuissonTotal;
cout << "tempsCuissonRealise :";
cin >> &toto.tempsCuissonRealise;

fwrite(&toto, sizeof(MyStruct), 1, fp);
fclose (fp) ; // fermeture

Le passage par référence se fait pour les nombres (et bien qur d'autres choses aussi) pour que l'on puisse vraiment modifier la valeur de ce nombre par la fonction appellante (ici, cin)

J'espère avoir pu t'aider

Gendal67, Dev-C++ 4.9.9.1, J'adore cppfrance!! :-))
Commenter la réponse de Gendal67
cs_benus 20 Messages postés lundi 14 mars 2005Date d'inscription 29 juillet 2009 Dernière intervention - 18 avril 2005 à 12:23
0
Merci
Merci ca me parait deja plus abouti )
Ms il me retourne cette erreur :

[C++ Erreur] Unit1.cpp(31): E2015 Ambiguïté entre '_STL::basic_istream<char,_STL::char_traits<char> >::operator >>(bool &)' et '_STL::basic_istream<char,_STL::char_traits<char> >::operator >>(void * &)'

la ligne correspondante est celle ci :

cin >> &toto.temptoto;

J'ai fait qq modifs ms rien a faire
Commenter la réponse de cs_benus

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.