[C] Liste simplement chainée ... Mémoire ...
Fermé
oliver91
Messages postés
51
Date d'inscription
lundi 21 mai 2007
Statut
Membre
Dernière intervention
9 septembre 2009
-
11 juin 2007 à 22:40
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 - 11 juin 2007 à 23:24
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 - 11 juin 2007 à 23:24
A voir également:
- [C] Liste simplement chainée ... Mémoire ...
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Mémoire vive - Guide
- Liste de diffusion whatsapp - Guide
- Gertrude a préparé la liste des affaires à prendre pour l'excursion. juliette a modifié cette liste en utilisant le mode suivi des modifications proposé par le traitement de texte. - Guide
3 réponses
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
11 juin 2007 à 22:51
11 juin 2007 à 22:51
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.
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.
oliver91
Messages postés
51
Date d'inscription
lundi 21 mai 2007
Statut
Membre
Dernière intervention
9 septembre 2009
3
11 juin 2007 à 23:01
11 juin 2007 à 23:01
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.
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.
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
11 juin 2007 à 23:24
11 juin 2007 à 23:24
Non si tu utilises fprintf tu peux organiser ton fichier avec un nom de fichier par ligne:
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....
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....