Supprimer la dernière ligne d'un fichier...

Résolu
Clonk Messages postés 278 Date d'inscription mardi 22 janvier 2002 Statut Membre Dernière intervention 29 août 2006 - 7 sept. 2004 à 10:40
cs_eRoZion Messages postés 241 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 8 octobre 2007 - 7 sept. 2004 à 21:26
Bonjour,
je voudrais pouvoir supprimer la dernière ligne d'un fichier le plus rapidement possible...
En fait, j'ajoute une ligne dans un fichier pendant le traitement A, puis je lance le traitement B qui va rajouter ou pas des lignes. Si aucune ligne n'est rajoutée en B, je veux pouvoir supprimer la ligne de A

J'espère que j'au été clair ^__^;

Merci

7 réponses

cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
7 sept. 2004 à 11:25
si tu veux faire ca le plus rapidement possible, pas de fichier

travail sur un tableau de chaine de caractere en memoire (une chaine = une ligne) et ecris dans le fichier a la fin des traitements
3
cs_eRoZion Messages postés 241 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 8 octobre 2007 1
7 sept. 2004 à 15:24
Et bien si tu ne veux pas passer par l'emploi de tableau, tu n'as qu'à mettre uniquement ta dernière ligne dans un buffer à l'étape A pour ensuite l'écrire si nécessaire à l'étape B (au cas ou l'étape A est totalement indépendante de l'étape B, sinon meme pas besoin de buffer).

Autrement j'ai une solution qui marche sous windows.
Tu stoque en mémoire la taille de ta dernière ligne, puis tu te sers de "chsize" (io.h) pour raccourcir le fichier. Si tu ne trouve pas le handle nécessaire à "chsize" (si tu es passé par fopen) et bien tu te sers de "fileno" (stdio.h) pour le récupérer.

eRoZion
0
Clonk Messages postés 278 Date d'inscription mardi 22 janvier 2002 Statut Membre Dernière intervention 29 août 2006
7 sept. 2004 à 16:38
Ouais, ça marche mieux comme ça effectivement...
J'utilise une liste chainée, mais ça marche pareil

Merci
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 sept. 2004 à 17:10
Sous Windows c'est SetFilePointer et SetEndOfFile.

ciao...
BruNews, Admin CS, MVP VC++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_eRoZion Messages postés 241 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 8 octobre 2007 1
7 sept. 2004 à 20:51
Bien pratique ce SetEndOfFile que je découvre (comme tous les autres api).
Merci.

eRoZion
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 sept. 2004 à 21:01
Fais gaffe a son emploi, tronque exeactement le fichier a l'endroit ou se trouve son pointeur au moment de l'appel.
Efficace et sans retour possible.

ciao...
BruNews, Admin CS, MVP VC++
0
cs_eRoZion Messages postés 241 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 8 octobre 2007 1
7 sept. 2004 à 21:26
Ok, c'est bon à savoir parce que la doc que je venais de regarder dessus ne le spécifiait pas (le coup du pointeur).

eRoZion
0
Rejoignez-nous