{"id":26823993,"url":"https://github.com/mbah24-dev/get_next_line","last_synced_at":"2025-06-15T16:36:42.118Z","repository":{"id":264692090,"uuid":"893461249","full_name":"mbah24-dev/get_next_line","owner":"mbah24-dev","description":"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. 🌟","archived":false,"fork":false,"pushed_at":"2024-12-17T17:07:32.000Z","size":40,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-30T09:17:21.721Z","etag":null,"topics":["c","makefile"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mbah24-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-24T14:08:14.000Z","updated_at":"2024-12-26T22:42:53.000Z","dependencies_parsed_at":null,"dependency_job_id":"41dc06c4-0058-452b-9432-9221101dca17","html_url":"https://github.com/mbah24-dev/get_next_line","commit_stats":null,"previous_names":["mbah24-dev/get_next_line"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mbah24-dev/get_next_line","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbah24-dev%2Fget_next_line","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbah24-dev%2Fget_next_line/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbah24-dev%2Fget_next_line/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbah24-dev%2Fget_next_line/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mbah24-dev","download_url":"https://codeload.github.com/mbah24-dev/get_next_line/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbah24-dev%2Fget_next_line/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260009407,"owners_count":22945457,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","makefile"],"created_at":"2025-03-30T09:17:24.299Z","updated_at":"2025-06-15T16:36:42.095Z","avatar_url":"https://github.com/mbah24-dev.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📜 **get_next_line**  \n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/mbah24-dev/mbah24-dev/blob/main/42_badges/get_next_linee.png\" alt=\"GNL 42 project badge\"/\u003e\n\u003c/p\u003e\n\nBienvenue 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. 🌟\n\n---\n\n## 🛠️ **Fonctionnalités**\n- 📄 Lecture ligne par ligne à partir d'un descripteur de fichier.\n- 💾 Gestion optimisée de la mémoire avec un **buffer** configurable.\n- 🚀 Compatibilité avec des fichiers, des sockets ou l'entrée standard.\n- 🔄 Rappelable pour continuer la lecture d'où elle s'était arrêtée.\n- 🔢 Bonus : Lecture simultanée depuis plusieurs descripteurs de fichier et utilisation d'une seul variable static.\n---\n\n## ⚙️ Compilation\n\n- Pour compiler ce projet get_next_line, utilisez la commande suivante :\n\n```bash\ncompile \u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\ncc -Wall -Wextra -Werror -D BUFFER_SIZE=SIZE get_next_line_bonus.* get_next_line_utils_bonus.c test/main.c\nExecute \u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\n./a.out test/file1.txt test/file2.txt test/file4.txt test/file6.txt \nOutput  \u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\nReading files simultaneously:\nFile 1: 01234567890123456789012345678901234567890\nFile 2: Alone\nFile 3: Squelette frileux\nFile 4: 42File 1: 1File 2: BY EDGAR ALLAN POE\nFile 3: le bruit sec des branches mortes\nFile 2: \nFile 3: sous le manteau blanc\nFile 2: From childhood's hour I have not been\n...\nFile 2: And the cloud that took the form\nFile 2: (When the rest of Heaven was blue)\nFile 2: Of a demon in my view-\nDone reading all files.\n```\n\n- Remplacez SIZE par la taille de buffer souhaitée.\n- Pour tester la version bonus (lecture depuis plusieurs descripteurs de fichier), compilez avec les fichiers *_bonus.c et get_next_line_bonus.h.\n\n\n## 🚧 **Prototype**\n\n```c\nchar *get_next_line(int fd);\n```\n---\n\n## 📂 Structure des fichiers\n\n- Le projet est composé des fichiers suivants :\n- get_next_line.c : Contient l'implémentation principale de la fonction.\n- get_next_line_utils.c : Fonctions auxiliaires pour la gestion de la mémoire et des chaînes de caractères.\n- get_next_line_bonus.c et get_next_line_utils_bonus.c : Implémentation pour la version bonus.\n- get_next_line.h : Prototype de la fonction principale.\n- get_next_line_bonus.h : Header spécifique à la version bonus.\n---\n## 🌟 Exemple d’utilisation\n\nVoici un exemple simple pour illustrer l’utilisation de **get_next_line** ! 🎉\n\n```c\n#include \u003cstdio.h\u003e\n#include \u003cstdlib.h\u003e\n#include \u003cfcntl.h\u003e\n#include \"../get_next_line_bonus.h\"\n\nint main(int argc, char **argv) {\n    if (argc \u003c 2) {\n        printf(\"Usage: %s file1 ...\\n\", argv[0]);\n        return (1);\n    }\n\n    int fds[argc - 1];\n    char *line;\n    int finished = 0;\n    int i;\n\n    for (i = 1; i \u003c argc; i++) {\n        fds[i - 1] = open(argv[i], O_RDONLY);\n        if (fds[i - 1] \u003c 0) {\n            perror(\"Error opening file\");\n            return (1);\n        }\n    }\n\n    printf(\"Reading files simultaneously:\\n\");\n    while (!finished) {\n        finished = 1;\n        for (i = 0; i \u003c argc - 1; i++) {\n            if (fds[i] != -1) {\n                line = get_next_line(fds[i]);\n                if (line) {\n                    printf(\"File %d: %s\", i + 1, line);\n                    free(line);\n                    finished = 0;\n                } else {\n                    close(fds[i]);\n                    fds[i] = -1; \n                }\n            }\n        }\n    }\n\n    printf(\"Done reading all files.\\n\");\n    return (0);\n}\n```\n \n## 🌈 À propos de l'auteur\n\n👨‍💻 Ce projet a été réalisé dans le cadre des cursus **42** par [mbah] ❤️. Toujours prêt à répondre à vos questions ! 🎉\n\n🎉 **Merci d’avoir lu ce README !** Prends du plaisir à coder **get_next_line** et que la mémoire soit avec toi. 💾🔥\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmbah24-dev%2Fget_next_line","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmbah24-dev%2Fget_next_line","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmbah24-dev%2Fget_next_line/lists"}