Skip to content

About

Get Next Line (GNL) is a C function that reads a line from a file descriptor, including standard input, and returns it as a string.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Repository files navigation

Get Next Line

Lire une ligne depuis un descripteur de fichier, quelle que soit sa longueur, en un seul appel réutilisable : get_next_line(fd) renvoie la ligne suivante (saut de ligne inclus) à chaque appel, jusqu'à NULL en fin de fichier. Projet du tronc commun de l'École 42.

C License

Fonctionnement

flowchart LR
    FD[fd] -->|read BUFFER_SIZE| BUF[buffer de lecture]
    BUF --> STASH[(stash statique<br/>persistant entre appels)]
    STASH -->|jusqu'au prochain \n| LINE[ligne renvoyée]
    STASH -.conserve le reste.-> STASH
Loading

Un buffer statique conserve ce qui a été lu au-delà du \n courant, de sorte que l'appel suivant reprenne exactement où le précédent s'est arrêté. La taille de lecture est configurable à la compilation via BUFFER_SIZE.

Utilisation

#include "get_next_line.h"
#include <fcntl.h>
#include <stdio.h>

int main(void)
{
    int   fd = open("file.txt", O_RDONLY);
    char *line;

    while ((line = get_next_line(fd)) != NULL)
    {
        printf("%s", line);
        free(line);
    }
    close(fd);
    return (0);
}
cc -D BUFFER_SIZE=42 main.c get_next_line.c get_next_line_utils.c -o gnl
  • Version bonus (*_bonus.c) : gère plusieurs descripteurs en parallèle, chacun avec son propre état.

Structure

get_next_line.c         logique principale
get_next_line_utils.c   helpers (longueur, concat, etc.)
get_next_line_bonus.c   version multi-fd

Licence

MIT — voir LICENSE.

About

Get Next Line (GNL) is a C function that reads a line from a file descriptor, including standard input, and returns it as a string.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages