- Objectif: Créer une fonction
get_next_linequi lit une ligne depuis un descripteur. - Prototype:
char *get_next_line(int fd);
- Comportement:
- Retourne la prochaine ligne (incluant le caractère newline s’il existe).
- Retourne
NULLen fin de fichier ou en cas d’erreur. - Doit fonctionner avec tout descripteur (y compris stdin).
- Variables globales interdites.
- Doit gérer des tailles de tampon variables via
BUFFER_SIZE.
- Bonus: Support de la lecture simultanée sur plusieurs descripteurs avec une seule variable statique.
Cet en-tête fournit les prototypes et includes pour l’implémentation standard (non-bonus).
size_t ft_strlen(const char *s);
char *ft_strdup(const char *s);
char *ft_strjoin(char *s1, char *s2);
char *ft_strchr(const char *s, int c);
char *ft_substr(char const *s, unsigned int start, size_t len);
char *get_next_line(int fd);Lit depuis un descripteur dans le tampon jusqu’à trouver un newline ou EOF.
char *read_until_newline(int fd, char **buffer);- Alloue un tampon temporaire.
- Lit dans
bufferjusqu’à la présence d’un newline ou absence de lecture. - Gère les erreurs et libère la mémoire en cas d’échec.
Extrait une ligne (jusqu’au premier newline inclus) depuis le tampon.
char *extract_line(char **buffer);- Retourne une nouvelle chaîne contenant une ligne.
- Met à jour le tampon en retirant la ligne retournée.
La fonction principale.
char *get_next_line(int fd);- Utilise un tampon statique pour conserver les restes entre appels.
- Appelle
read_until_newlinepuisextract_line. - Libère le tampon s’il est vide.
- À chaque appel, lit depuis
fddans un tampon statique jusqu’à trouver un newline ou EOF. - Retourne un pointeur vers une nouvelle chaîne contenant la prochaine ligne.
- Gère la mémoire avec soin pour éviter les fuites.
| Fonction | Description |
|---|---|
| ft_strlen | Retourne la longueur d’une chaîne |
| ft_strdup | Duplique une chaîne (malloc) |
| ft_strjoin | Concatène deux chaînes (libère la première) |
| ft_strchr | Trouve un caractère dans une chaîne |
| ft_substr | Extrait une sous-chaîne |
- Gère plusieurs descripteurs simultanés.
- Chaque fd conserve son propre tampon et état de lecture.
- Utilise une seule variable statique (tableau de pointeurs).
- Servent à conserver l’état du tampon entre les appels.
- Le tableau statique permet un tampon par descripteur.
- Retourne
NULLen cas d’erreur ou de fin de fichier. - Nettoie la mémoire en cas d’erreur.
- Vérifie toutes les allocations et les appels à read.
| Fichier | Rôle |
|---|---|
get_next_line.h |
En-tête de l’implémentation principale |
get_next_line.c |
Implémentation principale (un seul fd) |
get_next_line_utils.c |
Fonctions utilitaires de chaîne |
get_next_line_bonus.h |
En-tête pour le bonus (multi-fd) |
get_next_line_bonus.c |
Implémentation bonus (multi-fd) |
get_next_line_utils_bonus.c |
Fonctions utilitaires pour le bonus |

