getline, getdelim Subroutines

Finalità

Legge un record delimitato da un flusso.

Libreria

Libreria standard (libc.a)

Sintassi

#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);

Descrizione

La funzione getdelim si legge dal flusso fino a quando non incontra un carattere corrispondente al carattere delimitatore. L'argomento delimitatore è un int, il valore di cui l'applicazione garantirà è un carattere rappresentabile come un carattere non firmato di uguale valore che termina il processo di lettura. Se l'argomento delimitatore ha qualsiasi altro valore, il funzionamento è indefinito.

L'applicazione garantirà che * lineptr sia un argomento valido che potrebbe essere passato alla funzione free (). Se * n è non zero, l'applicazione garantisce che * lineptr punti ad un oggetto di almeno * n byte.

La funzione getline () è equivalente alla funzione getdelim () con carattere delimitatore uguale al ' \n' carattere.

Valori di ritorno

Al completamento di successo, la funzione getdelim () restituirà il numero di caratteri scritti nel buffer, incluso il carattere delimitatore se uno è stato riscontrato prima di EOF. Altrimenti, restituisce -1 e imposta l'errno per indicare l'errore.

Codici di errore

La funzione potrebbe non riuscire se:

Elemento Descrizione
[ EINVAL] lineptr o n sono puntatori nulli
[ ENOMEM] La memoria insufficiente è disponibile.
[ EINVAL] Stream non è un descrittore di file valido.
[ EOVERFLOW] Più di {SSIZE_MAX} i caratteri sono stati letti senza incontrare il carattere delimitatore.