Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2267 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Enregistrer et lire une structure dans un fichier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Enregistrer et lire une structure dans un fichier

n°704306
GOUGOU1
Posté le 20-04-2004 à 22:17:11  profilanswer
 

Bonjour, je voudrais savoir s'il est possible d'enregistrer et ensuite de charger une structure dans un fichier ?
 
par ex
 

Code :
  1. typedef struct {
  2. char nom[128];
  3. char prenom[128];
  4. int age;
  5. } personne;


 
Si oui, comment faire ? Je pensais en utilisant un fprintf et pui un fscanf, mais je ne sais pas si c'ets possible.
Merci
@++

mood
Publicité
Posté le 20-04-2004 à 22:17:11  profilanswer
 

n°704444
torpe23
Posté le 21-04-2004 à 00:08:58  profilanswer
 

fread et fwrite:
 

Code :
  1. #include <stdio.h>
  2.        size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
  3.        size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);

n°704476
Taz
bisounours-codeur
Posté le 21-04-2004 à 00:44:09  profilanswer
 

ouvre le fichier en mode binaire

n°704491
christophe​_d13
L'efficacité à tout prix.
Posté le 21-04-2004 à 01:09:03  profilanswer
 

A la place de ton int, utilise un long (tu as moins de chance d'avoir de pb entre plate-formes sauf les 64 bits).
sous GCC, tu peut rajouter "__attribute__ ((packed));" à la fin de chaque ligne pour fixer la taille quelle que soit la config du compilateur.

n°704796
Taz
bisounours-codeur
Posté le 21-04-2004 à 11:47:34  profilanswer
 

mauvais conseil : dès qu'on fait du binaire, il n'y a plus de compatiblité viable : ordre des octets, différences des compilateurs, tailles des données ... si j'étais toi j'ignorerais le packed de gcc (tu veux faire quoi niveau portabilit"avec un truc comme ça ?)
 
au mieux pour la taille de ton int tu peux utilisé <stdint.h> pour fixer un peu la taille de ton int. mais sinon en binaire c'est peine perdu. si tu veux un format portable facilement, repasse en mode texte

n°704987
christophe​_d13
L'efficacité à tout prix.
Posté le 21-04-2004 à 14:29:52  profilanswer
 

Taz> Cela a toujours été un problème avec le c...
Dans mes progs, pour stocker, j'envoi également le sizeof de la variable à stocker. A la lecture plus de problème.
C'est plus viable que packed, je suis bien d'accord, mais c'est aussi plus complexe.

n°705306
Taz
bisounours-codeur
Posté le 21-04-2004 à 17:47:15  profilanswer
 

mais on a jamais dit le contraire.

n°705425
GOUGOU1
Posté le 21-04-2004 à 20:43:55  profilanswer
 

ok, fread et fwrite, par contre, size c'est la taille totale de ma structure, donc je dois fait une zone de la taille de chacun de ses composants ?
par contre, nmemb, c'est le nombre de structures que j'enregistre ?
Et enfin, si par exemple, j'ai un tableau de 100 caractère, mais que ma chaine en fait que 10, est-ce que cela va m'enregistrer un tableau de 100, ou un tabelau de 10 ? En fait, je pense que ce sera la première solution, sinon çà risque de foutre la mer** , mais il vaux mieux demander.
merci et @+++

n°705430
Taz
bisounours-codeur
Posté le 21-04-2004 à 20:47:52  profilanswer
 

fread/fwrite -> binaire -> vas lire/écrire invaraiblement size*nmemb byte (char).
 
 
écrire une personne
fwrite (&taz, sizeof taz, 1, out)
 
écrire un tableau
fwrite (ppl, sizeof ppl[0], sizeof ppl / sizeof ppl[0], out)
 
écire un pointeur
fwrite(ptr, sizeof *ptr, N, out);


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Enregistrer et lire une structure dans un fichier

 

Sujets relatifs
[PHP] Changer localement le niveau d'erreur dans un fichier[Java] parser fichier CSV... JDBC ?
Problème de lecture de fichier temporaire[Résolu] [C#] Effacer des lignes de textes dans un fichier
Types d'erreurs lors d'un accès à un fichier avec Glibscript de gestion de fichier?
Obtenir le format d'un fichier[Visual C++] Indentation automatique d'un fichier XML
Application java a partir d'un fichier 
Plus de sujets relatifs à : Enregistrer et lire une structure dans un fichier


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR