getline, getdelim-Subroutinen
Zweck
Liest einen Datensatz mit Begrenzer aus einem Datenstrom.
Bibliothek
Standardbibliothek (libc.a)
Syntax
#include <stdio.h>
ssize_t getdelim(char **lineptr, size_t *n, int delimiter, FILE *stream);
ssize_t getline(char **lineptr, size_t *n, FILE *stream); Beschreibung
Die Funktion getdelim liest aus dem Datenstrom, bis ein Zeichen gefunden wird, das dem Begrenzungszeichen entspricht. Das Begrenzerargument ist ein Integer, dessen Wert die Anwendung sicherstellt, dass es sich um ein Zeichen handelt, das als Zeichen ohne Vorzeichen mit gleichem Wert dargestellt werden kann, das den Leseprozess beendet. Wenn das Begrenzungsargument einen anderen Wert hat, ist das Verhalten nicht definiert.
Die Anwendung stellt sicher, daß * lineptr ein gültiges Argument ist, das an die Funktion free () übergeben werden könnte. Wenn * n ungleich null ist, stellt die Anwendung sicher, dass * lineptr auf ein Objekt mit mindestens * n Bytes verweist.
Die Funktion getline () entspricht der Funktion getdelim () mit einem Begrenzungszeichen, das dem Zeichen ' \n' entspricht.
Rückgabewerte
Nach erfolgreicher Beendigung gibt die Funktion getdelim () die Anzahl der Zeichen zurück, die in den Puffer geschrieben wurden, einschließlich des Begrenzungszeichens, wenn ein Zeichen vor EOF gefunden wurde. Andernfalls wird -1 zurückgegeben und errno gesetzt, um den Fehler anzuzeigen.
Fehlercodes
Die Funktion kann fehlschlagen, wenn:
| Element | Beschreibung |
|---|---|
| [EINVAL] | lineptr oder n sind Nullzeiger |
| [ENOMEM] | Nicht genügend Speicher verfügbar. |
| [EINVAL] | Datenstrom ist kein gültiger Dateideskriptor. |
| [EOVERFLOW] | Es wurden mehr als {SSIZE_MAX} Zeichen gelesen, ohne das Begrenzungszeichen zu finden. |