https://github.com/mbah24-dev/get_next_line
Bienvenue dans le dépôt get_next_line, une implémentation élégante et robuste de la fonction get_next_line 🧵. Ce projet est un incontournable de l'école 42, conçu pour lire ligne par ligne depuis un fichier ou une entrée standard. 🌟
https://github.com/mbah24-dev/get_next_line
c makefile
Last synced: 12 months ago
JSON representation
Bienvenue dans le dépôt get_next_line, une implémentation élégante et robuste de la fonction get_next_line 🧵. Ce projet est un incontournable de l'école 42, conçu pour lire ligne par ligne depuis un fichier ou une entrée standard. 🌟
- Host: GitHub
- URL: https://github.com/mbah24-dev/get_next_line
- Owner: mbah24-dev
- Created: 2024-11-24T14:08:14.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-12-17T17:07:32.000Z (over 1 year ago)
- Last Synced: 2025-03-30T09:17:21.721Z (about 1 year ago)
- Topics: c, makefile
- Language: C
- Homepage:
- Size: 39.1 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 📜 **get_next_line**
Bienvenue dans le dépôt **get_next_line**, une implémentation élégante et robuste de la fonction `get_next_line` 🧵. Ce projet est un incontournable de l'école 42, conçu pour lire ligne par ligne depuis un fichier ou une entrée standard. 🌟
---
## 🛠️ **Fonctionnalités**
- 📄 Lecture ligne par ligne à partir d'un descripteur de fichier.
- 💾 Gestion optimisée de la mémoire avec un **buffer** configurable.
- 🚀 Compatibilité avec des fichiers, des sockets ou l'entrée standard.
- 🔄 Rappelable pour continuer la lecture d'où elle s'était arrêtée.
- 🔢 Bonus : Lecture simultanée depuis plusieurs descripteurs de fichier et utilisation d'une seul variable static.
---
## ⚙️ Compilation
- Pour compiler ce projet get_next_line, utilisez la commande suivante :
```bash
compile >>>>>>>>
cc -Wall -Wextra -Werror -D BUFFER_SIZE=SIZE get_next_line_bonus.* get_next_line_utils_bonus.c test/main.c
Execute >>>>>>>>
./a.out test/file1.txt test/file2.txt test/file4.txt test/file6.txt
Output >>>>>>>>
Reading files simultaneously:
File 1: 01234567890123456789012345678901234567890
File 2: Alone
File 3: Squelette frileux
File 4: 42File 1: 1File 2: BY EDGAR ALLAN POE
File 3: le bruit sec des branches mortes
File 2:
File 3: sous le manteau blanc
File 2: From childhood's hour I have not been
...
File 2: And the cloud that took the form
File 2: (When the rest of Heaven was blue)
File 2: Of a demon in my view-
Done reading all files.
```
- Remplacez SIZE par la taille de buffer souhaitée.
- Pour tester la version bonus (lecture depuis plusieurs descripteurs de fichier), compilez avec les fichiers *_bonus.c et get_next_line_bonus.h.
## 🚧 **Prototype**
```c
char *get_next_line(int fd);
```
---
## 📂 Structure des fichiers
- Le projet est composé des fichiers suivants :
- get_next_line.c : Contient l'implémentation principale de la fonction.
- get_next_line_utils.c : Fonctions auxiliaires pour la gestion de la mémoire et des chaînes de caractères.
- get_next_line_bonus.c et get_next_line_utils_bonus.c : Implémentation pour la version bonus.
- get_next_line.h : Prototype de la fonction principale.
- get_next_line_bonus.h : Header spécifique à la version bonus.
---
## 🌟 Exemple d’utilisation
Voici un exemple simple pour illustrer l’utilisation de **get_next_line** ! 🎉
```c
#include
#include
#include
#include "../get_next_line_bonus.h"
int main(int argc, char **argv) {
if (argc < 2) {
printf("Usage: %s file1 ...\n", argv[0]);
return (1);
}
int fds[argc - 1];
char *line;
int finished = 0;
int i;
for (i = 1; i < argc; i++) {
fds[i - 1] = open(argv[i], O_RDONLY);
if (fds[i - 1] < 0) {
perror("Error opening file");
return (1);
}
}
printf("Reading files simultaneously:\n");
while (!finished) {
finished = 1;
for (i = 0; i < argc - 1; i++) {
if (fds[i] != -1) {
line = get_next_line(fds[i]);
if (line) {
printf("File %d: %s", i + 1, line);
free(line);
finished = 0;
} else {
close(fds[i]);
fds[i] = -1;
}
}
}
}
printf("Done reading all files.\n");
return (0);
}
```
## 🌈 À propos de l'auteur
👨💻 Ce projet a été réalisé dans le cadre des cursus **42** par [mbah] ❤️. Toujours prêt à répondre à vos questions ! 🎉
🎉 **Merci d’avoir lu ce README !** Prends du plaisir à coder **get_next_line** et que la mémoire soit avec toi. 💾🔥