Go to file
2025-10-02 10:18:56 +02:00
get_next_line_utils.c work 2021-11-22 11:33:32 +01:00
get_next_line.c work 2021-11-22 11:33:32 +01:00
get_next_line.h work 2021-11-22 11:33:32 +01:00
README.md docs: add comprehensive README for line reading function project 2025-10-02 10:18:56 +02:00

get_next_line

Description

get_next_line est un projet de l'École 42 qui consiste à créer une fonction capable de lire un fichier ligne par ligne. Cette fonction gère plusieurs file descriptors simultanément et optimise la lecture avec un buffer.

Prototype

char *get_next_line(int fd);

Fonctionnalités

  • Lecture ligne par ligne depuis n'importe quel fd
  • Gestion multiple fd simultanément
  • Buffer optimisé configurable (BUFFER_SIZE)
  • Gestion des fichiers de toute taille
  • Memory management sans leaks
  • Retour NULL à la fin du fichier

Technologies utilisées

  • Langage : C
  • I/O : read() system call
  • Gestion mémoire : malloc/free
  • Static variables pour persistance

Installation

git clone <repository-url>
cd get_next_line
gcc -Wall -Wextra -Werror -D BUFFER_SIZE=42 get_next_line.c

Utilisation

#include "get_next_line.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);
}

Configuration

La taille du buffer est définie à la compilation :

gcc -D BUFFER_SIZE=1024 get_next_line.c

Gestion des cas limites

  • Fichiers vides
  • Lignes très longues
  • Fichiers sans '\n' final
  • Multiple fd en parallèle
  • Erreurs de lecture

Optimisations

  • Buffer statique pour éviter les re-lectures
  • Gestion efficace de la mémoire
  • Parsing minimal des données lues

Bonus

  • Gestion de multiples fd avec une seule variable statique
  • Optimisation mémoire avancée

Compétences développées

  • Gestion avancée des file descriptors
  • Optimisation des I/O
  • Gestion mémoire rigoureuse
  • Programmation système

Auteur

Alexandre Pommier (apommier) - École 42