Bonjour,
Jusqu'à maintenant j'utilisais dans mon programme la fonction ftell() pour savoir où se situe la "tête de lecture" dans mon fichier (ouvert en lecture) lorsque je ferme mon programme ; sa valeur était enregistrée dans un petit fichier supplémentaire. Lorsque je le réexécutais (avec les arguments qu'il faut), le petit fichier supplémentaire était lu, le fichier rouvert en lecture, et avec un fseek(fpRead, offset, SEEK_SET); je le replaçais là où il en était juste avant la fermeture du programme.
Mon problème, c'est que ça fonctionne très bien pour des fichiers de "petite" taille. Mais je dispose de fichier pesant plusieurs Go (environ 30Go). Ce qui est trop grand pour ftell() lorsque la "tête de lecture" est bien avancée (je n'ai pas testé mais je pense que la limite doit être 2^31o = 2Go). Du coup je ne peux pas repositionner là où il faut lors de la reprise.
J'ai pensé à faire une boucle while avec un compteur et faisant un fseek(fpRead, -10000, SEEK_CUR); pour reculer de 10000octet jusqu'à trouver le début ; j'en obtiendrais ainsi la position de la "tête de lecture" non pas directement au ftell() mais A×10000+B (avec A le compteur de la boucle while incrémenté à chaque pas de 10'000octets).
Je ne trouve pas ça très joli, je ne l'ai que pensé, pas encore fait.
Est-ce que quelqu'un connaîtrait une autre méthode "plus jolie" pour récupérer la position de la "tête de lecture" dans un fichier énorme ?
Merci par avance

Comme je ne pense pas que je serai confronté à un autre problème concernant ça je mets mon sujet comme résolu.