Péreniser une liste dans une fichier

[Fermé]
Signaler
Messages postés
6
Date d'inscription
samedi 3 novembre 2007
Statut
Membre
Dernière intervention
28 novembre 2007
-
Messages postés
2435
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
16 août 2010
-
Bonjour,
Excuse moi je suis entrain d'écrire un programme en C sur Visual C++ , et je voudrai péreniser le contenu de ma liste chaine dans un fichier en binaire si vous avez une idée aidez-moi
Merci

9 réponses

Messages postés
2435
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
16 août 2010
428
pour metre ta liste chaine dans un fichier tu peux utiliser la fonction fwrite et tu ajoute chaque element de la liste comme ça
Messages postés
6
Date d'inscription
samedi 3 novembre 2007
Statut
Membre
Dernière intervention
28 novembre 2007

merci de ta reponce mais je sais pas comment le faire,t'as pas un exemple complet ?
Messages postés
2435
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
16 août 2010
428
voila un exemple c'est une fonction pour inserer une liste chainee dans un fichier en mode binaire

void save(struct exemple *p) {
    FILE *f=fopen("fichier","wb");
    while(p){
        fwrite((char *) p,sizeof(struct exemple),1,fichier);
        p=p->suiv;
    }
    fclose(fichier);
}
Messages postés
6
Date d'inscription
samedi 3 novembre 2007
Statut
Membre
Dernière intervention
28 novembre 2007

merci pour ta reponce.en fait j ai fait une fonction pour enregistrer dans un fichier binaire et je sais pas cmt faire la fonction pour lire a partir d un fichier binaire c ca ma fonction enregstrer...


void EcrireFichier(voiture v)
{
voiture pc;
FILE *fichier;
pc=v;
fichier=fopen(NomFichier,"w");
if(v==NULL)
{
fclose(fichier);
}
while(pc!=NULL)
{
fprintf(fichier,"%d\n",pc->puissance);
fprintf(fichier,"%f\n",pc->prix);
fprintf(fichier,"%s\n",pc->marque);
fprintf(fichier,"%s\n",pc->modele);
pc=pc->suivant;
}
fclose(fichier);
}


j ai besoin d aide
Messages postés
2435
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
16 août 2010
428
je pense pas que ta fonction pour enregistrer marche essaye plutot ça

void EcrireFichier(voiture *v) 
{ 

FILE *fichier; 

        fichier=fopen("NomFichier","w"); 
    if(fichier==NULL) 
        printf("le fichier n'existe pas\n");
 
while(v!=NULL) 
    { 
    fprintf(fichier,"%d\n",v->puissance); 
    fprintf(fichier,"%f\n",v->prix); 
    fprintf(fichier,"%s\n",v->marque); 
    fprintf(fichier,"%s\n",v->modele); 
    v=v->suivant; 
    } 
fclose(fichier); 
}
Messages postés
6
Date d'inscription
samedi 3 novembre 2007
Statut
Membre
Dernière intervention
28 novembre 2007

merci de ta reponce.je vais essayer avec ça. tu sait comment lire dans ce fichier binaire
Messages postés
2435
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
16 août 2010
428
c'est presque pareil tu ouvre ton fichier avec le mode "rb" et tu lis ce que tu veux avec la fonction fread
Messages postés
6
Date d'inscription
samedi 3 novembre 2007
Statut
Membre
Dernière intervention
28 novembre 2007

si tu peux m écrire la fonction ca serai mieux car je suis perdu j ai pas bien compris ses truc pourtant j ai besoin de la fonction lire pour ca



void EcrireFichier(voiture *v)
{

FILE *fichier;

fichier=fopen("NomFichier","w");
if(fichier==NULL)
printf("le fichier n'existe pas\n");

while(v!=NULL)
{
fprintf(fichier,"%d\n",v->puissance);
fprintf(fichier,"%f\n",v->prix);
fprintf(fichier,"%s\n",v->marque);
fprintf(fichier,"%s\n",v->modele);
v=v->suivant;
}
fclose(fichier);
}
Messages postés
2435
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
16 août 2010
428
pour lire les element du fichier et les metre dans une liste chaine voici une fonction (j'ai pas testé mais ça ressemble a ça)

void lectureFichier( struct voiture **v)
{

FILE *fichier;

        fichier=fopen("NomFichier","r");
    if(fichier==NULL)
        printf("le fichier n'existe pas\n");

while(!feof(fichier))
    {
    aux=((struct voiture *) malloc(sizeof(struct voiture));
    fscanf(fichier,"%d""%f""%s""%s",&(aux->puissance),&(aux->prix),&(aux->marque),&(aux->modele));
    if(*v==NULL){
        *v=cour=aux;
    }
    else
     {
         cour->suivant=aux;
         cour=cour->suivant;
     }
     cour->suivant=NULL;
    }
fclose(fichier);
}