Lire un fichier a l'envers en C (pas C++)

Signaler
Messages postés
1
Date d'inscription
mercredi 9 juin 2004
Statut
Membre
Dernière intervention
9 juin 2004
-
Messages postés
33
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
10 juin 2005
-
Bonjour,

Je suis à une position donnée dans un fichier (apres plusieurs fgets() )
et j'ai besoin de recupérer un bloc de taille indefinie (mais marqué par des balises) précédant ma position actuelle.

Comment faire cela? Le fichier à parser est potentiellement tres gros, je peux pas tout mettre en mémoire. Et les fonctions standards de stdio.h ne permettent pas la lecture en sens inverse...

Une idée ?

Merci
BR

3 réponses

Messages postés
33
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
10 juin 2005

ben je sais pas si c vraiment une bonne idée mais au depart je pensé comme toi !! avec des fqqchose. essai des methode de lecture de plus bas nivo.
comme read() et write(). si besoin de plus d'info contacte moi sinon l'aide est pas mal faite aussi
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
tu veux récupérer un bloc de taille n. Comme tu peux pas tout mettre en mémoire, tu prend dans des bloc de 1024 par exemple.

tant que n > 1024
{
tu recules de 1024, tu lis 1024 et tu recules de 2048, et tu inverses la chaine (la ca peut être long)
tu enleves 1024 à n
}
tu lis n caractères et tu inverses
Messages postés
33
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
10 juin 2005

non pas vraiment si compliqué que ca !!!
en fait tu as un pointeur sur un fichier !!
fic = open (syntaxe);
fic en fait correspond a la position du pointeur ds le fichier.
Alors avec une Zolie fction tu le met a la fin de ton fichier (il en existe une en c filelenght (un truc ds ce genre)). Ensuite ton pointeur tu le fait reculer de 2 fois ton avancement pour que qd tu avance tu retombe a la fin d'ou tu veux tomber.
nota g employé cette methode a l'endroit pour lire un fichier mais bon ca marche aussi a l'envers!! et ton raisonnement été bon. je le confirme. a bientot