| get_next_line_utils.c | ||
| get_next_line.c | ||
| get_next_line.h | ||
| README.md | ||
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