← Retour aux projets

get_next_line

Lecture d’un fichier ligne par ligne en C, avec un tampon statique conservé entre les appels et sans fuite mémoire.

Période
21/12/2021
Catégorie
42
Domaine
Systèmes
Note
125
Technologies
  • C
Liens

Lire un descripteur de fichier ligne par ligne, jusqu’à la fin du fichier.

Ce que fait la fonction

get_next_line renvoie la ligne suivante — retour à la ligne inclus — lue sur un descripteur de fichier. Appelée en boucle, elle parcourt un fichier entier, et se comporte de la même façon sur un fichier, sur l’entrée standard ou sur une redirection. La version bonus gère plusieurs descripteurs ouverts en même temps sans jamais mélanger leurs contenus.

Comment elle fonctionne

Une variable statique conserve ce qui a été lu au-delà de la fin de la ligne courante : l’appel suivant reprend donc là où le précédent s’est arrêté. La taille de lecture est une constante de compilation (-D BUFFER_SIZE=xx), ce qui oblige la fonction à se comporter à l’identique qu’elle lise un octet ou un mégaoctet à la fois.

Ce que j’en ai tiré

Les variables statiques et leur durée de vie, et la rigueur qu’exigent les lectures partielles : chaque branche doit libérer ce qu’elle a alloué, y compris celles qui ne s’exécutent qu’en cas d’erreur.