Dieses Repository enthält die Implementierung der Funktion get_next_line, die das Lesen von Zeilen aus einem Dateideskriptor erleichtert. Die Aufgabe erfordert die korrekte Verarbeitung von Datei- und Standardinput und stellt Anforderungen an die Handhabung des Buffering-Prozesses.
get_next_line.c
: Implementierung der get_next_line-Funktion.get_next_line_utils.c
: Hilfsfunktionen für die get_next_line-Implementierung.get_next_line.h
: Header-Datei mit der Funktionssignatur von get_next_line.
-D BUFFER_SIZE=n
: Definiert die Puffergröße für die read()-Funktion.- Die Puffergröße kann von Peer-Evaluatoren und der Moulinette modifiziert werden.
- Das Projekt sollte sowohl mit als auch ohne das
-D BUFFER_SIZE
Flag kompilierbar sein.
char *get_next_line(int fd);
fd
: Der Dateideskriptor, von dem gelesen werden soll.
- Lesen der Zeile: Korrektes Verhalten.
NULL
: Es gibt nichts mehr zu lesen oder ein Fehler ist aufgetreten.
read
,malloc
,free
- Wiederholte Aufrufe von
get_next_line()
sollten es ermöglichen, eine Textdatei zeilenweise zu lesen. - Die Funktion sollte sowohl mit Dateien als auch mit der Standardeingabe korrekt funktionieren.
- Die zurückgegebene Zeile sollte das abschließende
\n
-Zeichen enthalten, es sei denn, das Ende der Datei wurde erreicht und endet nicht mit einem\n
. - Die Header-Datei
get_next_line.h
muss mindestens den Prototyp der Funktionget_next_line()
enthalten. - Füge alle benötigten Hilfsfunktionen in der Datei
get_next_line_utils.c
hinzu.
- Der Compileraufruf muss die Option
-D BUFFER_SIZE=n
enthalten, um die Puffergröße fürread()
zu definieren. - Die Funktion hat ein undefiniertes Verhalten, wenn sich die Datei seit dem letzten Aufruf des Dateideskriptors geändert hat und
read()
das Dateiende nicht erreicht hat. - Undefiniertes Verhalten tritt ebenfalls auf, wenn eine binäre Datei gelesen wird.
- Die Implementierung sollte effizient sein, unabhängig von der BUFFER_SIZE-Wertigkeit.
- Die Verwendung von libft ist nicht erlaubt.
lseek()
ist untersagt.- Globale Variablen sind untersagt.