Chargement d'une liste chainée à partir d'un fichier

khalil - Modifié par BunoCS le 31/12/2013 à 09:16
nagaD.scar
Messages postés
4269
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
4 mars 2021
- 14 janv. 2014 à 14:47
Bonjour,
jé cré un prog l'un de ses fonctions charger une liste w sauvegarder une liste dans un fichier jé eu un probleme dans la fct du chargement
voici les 2 fction je pveut savoir quel est la menace .

#include <stdio.h>
#include <stdlib.h>
#include "struct.h"

int sauvegarder(liste L)
{
    stock* p;
    p=L.head;
    FILE *fichier;
    fichier = fopen("Fstock.txt", "w+");
    int i;
     if (fichier == NULL)
      {
        printf("Impossible d'ouvrir le fichier");
        exit(0);
      }
      else
      {
        if(p==NULL)
          {
              printf("la liste est vide");
          }

        else

         {
         i=1;
         while(p!=NULL)
          {
           fprintf(fichier,"\n%d",i);
           fprintf(fichier, "\n%ld ",p->identifiant);
           fprintf(fichier, "\n%s ", p->nom);
           fprintf(fichier, "\n%s ", p->type);
           fprintf(fichier, "\n%d ", p->nombre);
           p=p->next;

           i++;
          }
        }
      }

    fclose(fichier);
    printf("%d",i);
    system("echo Sauvgarde en cours\nsleep 0.5\necho .\nsleep 0.5\necho .\nsleep 0.5\necho .\nsleep 0.5");

   return 0;
}


int charger(liste* L)
{
    int i;
    stock* p;
    p=(stock*)malloc(sizeof(stock));
    FILE* fichier = NULL;

    fichier = fopen("Fstock.txt", "r+");

    if (fichier == NULL)
    {
        printf("Impossible d'ouvrir le fichier");
        return EXIT_FAILURE;
    }
    else
    {
        //chargement du contenu du fichier dans les structures
      do
        {
            fscanf(fichier, "\n%ld ",p->identifiant);
            fscanf(fichier, "\n%s ",&p->nom);
            fscanf(fichier, "\n%s ",&p->type);
            fscanf(fichier, "\n%d ",p->nombre);
            fscanf(fichier,"\n%d ",i);
             if(L->head==NULL)
                {
                  L->head=p;
                  L->tail=p;
                  p->next=NULL;
                }
             else
              {
                  p->next=L->head;
                  L->head=p;
              }

        }while(fgetc(fichier) != EOF);


    }
    fclose(fichier);
    return 0;
}

rep svp

2 réponses

BunoCS
Messages postés
15277
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
26 juillet 2022
103
Modifié par BunoCS le 31/12/2013 à 09:17
Hello,
J'ai édité ton message pour rajouter les balises code. Merci d'y penser la prochaine fois ;) (plus d'infos ici)

Edit: je déplace également ta demande dans la section C, car ton code n'est pas du C#

@+
Buno, Modo CS-CCM
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
The urgent is done, the impossible is underway. For miracles, envisage a time ...
0
nagaD.scar
Messages postés
4269
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
4 mars 2021
16
14 janv. 2014 à 14:47
salut,

un petit effort d'écriture serai la bienvenue, je suis pas sûr d'avoir bien compris tous les "mots" (je fais des fautes , je me fous qu'il y ai une orthographe et grammaire parfaite, mais un effort d'écriture quand vous avez besoin d'aide est à mon avis un minium).

Bon sinon c'est quoi la question? car "j'ai eu un problème" ne risque pas de nous donner de quoi taffer, et "quelle est la menace" veut dire ? on ne connait pas la définition de ta liste (ou des objets qui la composent, on peu juste les supposer avec les sprintf).

un exemple avec une présentation de l'erreur que tu as rencontré est un minimum si tu souhaite de l'aide.

tout ce que je peux dire c'est qu'il est étrange que tu écrive ton curseur en entête mais qu'à la lecture, tu le prend en dernier ..

naga
0