KioskeaKioskeaCommentCaMarcheInscrivez-vous, c'est gratuit !
Samedi 17 mai 2008 - 21:14:08

[C] Liste simplement chainée ... Mémoire ...

Rechercher : dans
[C] Liste simplement chainée ... Mémoire ...
par oliver91
 Fil de Discussions
Statut : Non résolu
lundi 11 juin 2007 à 22:40:50
Bonsoir à tous,

J'ai un projet à rendre pour demain et je rencontre actuellement un gros soucis ...

En fait, je souhaite créer une liste des fichiers que le programme doit pouvoir utiliser ... mais cette liste doit pouvoir etre modifier par l'utilisateur ...

Je me suis donc dit de faire ça sous forme d'une liste chainée ... afin que le rajout et la modification soit aisément possible ...

Or le probleme auquel je ne sais que faire est qu'il faut resaisir à chaque lancement du programme le nom de tous les fichiers ...

Comment faire pour que le prog garde en mémoire les noms de fichiers de la liste chainée ?

Ci dessou ma struct :
struct FicFaits {
       char NomFicFaits[200];
       struct FicFaits * SuivFicFaits;
       };



Ma fonction de rajout d'un nom de fichier :
void ajout_fic_fait(struct FicFaits **p){
     struct FicFaits *element = malloc(sizeof(struct FicFaits));
     printf("\nVeuillez saisir le nom de fichier de faits à rajouter à la base :\n");
     scanf("%s",element->NomFicFaits);
     element->SuivFicFaits = NULL;
     *p = element;
}



Merci de votre aide assez rapide ...
Bonne soirée,


Olivier.
Répondre à oliver91  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par kilian, le lundi 11 juin 2007 à 22:51:53 Fil de Discussions
Salut,

La mémoire n'est pas persistante pour une application qui est lancée plusieurs fois.
L'idéal dans ton cas, je pense que c'est d'enregistrer ces noms de fichiers dans ... un fichier justement.
..et le...le...enfin, non parce c'est...ya...quand...bah tu sais là le...
Répondre à kilian

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par oliver91, le lundi 11 juin 2007 à 23:01:24 Fil de Discussions
Oui mais la suppression d'un nom de fichier devient alors compliqué ... non ?

J'ai peur de devoir tout changer ...

Mais si tu penses que cette solution est vraiment bonne ... merci de bien vouloir me la décrire au mieux ...

Merci Kilian !


Olivier.
Répondre à oliver91

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par kilian, le lundi 11 juin 2007 à 23:24:05 Fil de Discussions 
Non si tu utilises fprintf tu peux organiser ton fichier avec un nom de fichier par ligne:

void writeAll(struct FicFaits *root, char *filename)
{
    FILE *fp = fopen(filename, "w");
    if(fp == NULL){
        return;
    }
    while(root!=NULL)
    {
         fprintf(fp, "%s\n", root->NomFicFaits);
         root=root->SuivFicFaits;
    }
    fclose(fp);
}

Si un fichier doit être supprimé, alors supprime le dans la liste puis rappele cette fonction et elle réécrira tout.

Pour lire ce fichier tu peux faire comme tu veux, en utilisant fscanf ce sera très simple car fscanf s'arrête aux sauts de ligne, mais il faut absolument que tu vérifies la taille des chaines contenues dans chaque ligne avant (elles ne doivent pas dépasser 200).
En fait le mieux c'est que tu lises tout le contenu du fichier d'un coup dans un buffer.
Tu comptes le nombre de caractère entre le pointeur de buffer courant et le prochain saut de ligne. Si c'est inférieur à 200, tu utilises sscanf (et pas fscanf ni scanf) pour lire cette ligne. Tu avances le pointeur du buffer après ce saut de ligne et tu recommences. Tout ça jusqu'à la fin du buffer.

Si mon explication ne te semble pas clair, et je le comprendrais :-) , dis le moi....
..et le...le...enfin, non parce c'est...ya...quand...bah tu sais là le...
Répondre à kilian
Discussions pertinentes trouvées dans le forum
16/03 22h31[c] liste simplement chainéProgrammation21/11 22h034
06/01 17h26listes simplement chainées en lagage cProgrammation28/02 01h561
05/11 20h25listes simplement chaineesProgrammation06/11 18h022
25/02 22h13langage c liste chainee urgent pleaseProgrammation25/02 22h542
Plus de discussions sur « [C] Liste simplement chainée ... Mémoire ... » Discussion en cours Discussion fermée Problème résolu
Répondre
Titre du message :
Votre pseudo:
Votre email :
Message: 
  •  
  •  
Options: Recevoir les réponses par mail.
 

Aide