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 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 - 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 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 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 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 17
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
Rejoignez-nous