docs: add comprehensive README for line reading function project
This commit is contained in:
parent
3ba1886eee
commit
511340cba9
80
README.md
Normal file
80
README.md
Normal file
@ -0,0 +1,80 @@
|
||||
# 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
|
||||
```c
|
||||
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
|
||||
```bash
|
||||
git clone <repository-url>
|
||||
cd get_next_line
|
||||
gcc -Wall -Wextra -Werror -D BUFFER_SIZE=42 get_next_line.c
|
||||
```
|
||||
|
||||
## Utilisation
|
||||
```c
|
||||
#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 :
|
||||
```bash
|
||||
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
|
||||
Loading…
Reference in New Issue
Block a user