Provided by:
manpages-es_1.55-10_all 
NOMBRE
getline, getdelim - entrada de cadena delimitada
SINOPSIS
#define _GNU_SOURCE
#include <stdio.h>
ssize_t getline(char **lineptr, size_t *n, FILE *stream);
ssize_t getdelim(char **lineptr, size_t *n, int delim, FILE *stream);
DESCRIPCI'ON
getline() lee una linea entera, almacenando la direccion del buffer que
contiene el texto en *lineptr. Al final del buffer se coloca el valor
null y ademas se incluye el caracter nueva linea si se encontro el
delimitador nueva linea.
Si *lineptr es NULL, la rutina getline() reservara un buffer para
contener la linea, que debe ser liberado por el programa de usuario.
Alternativamente, antes de llamar a getline(), *lineptr puede contener
un puntero a un buffer reservado via malloc() de tamano *n bytes. Si el
buffer no es lo suficientemente grande para almacenar la linea leida,
getline() redimensiona el buffer para que quepa con realloc(),
actualizando *lineptr y *n si es necesario. En cualquier caso, si la
llamada tiene exito, *lineptr y *n seran actualizados para reflejar la
direccion del buffer y el tamano respectivamente.
getdelim() funciona como getline(), salvo que se puede especificar otro
delimitador de linea distinto de nueva linea en el argumento delimiter.
Como con getline(), no se anade un caracter delimitador si no hay
ninguno presente en la entrada antes de que se alcanze el fin del
fichero.
VALOR DEVUELTO
En caso de exito, getline() y getdelim() devuelven el numero de
caracteres leidos, incluyendo el caracter delimitador, pero sin incluir
el caracter null del final. Este valor puede usarse para manejar los
caracters null embebidos en la linea leida.
Ambas funciones devuelven -1 si fallan al leer una linea (incluyendo la
condicion de fin de fichero).
ERRORES
EINVAL Parametros incorrectos (n o lineptr son NULL, o stream no es
valido).
EJEMPLO
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE * fp;
char * line = NULL;
size_t len = 0;
ssize_t read;
fp = fopen("/etc/motd", "r");
if (fp == NULL)
exit(EXIT_FAILURE);
while ((read = getline(&line, &len, fp)) != -1) {
printf("Retrieved line of length %zu :\n", read);
printf("%s", line);
}
if (line)
free(line);
return EXIT_SUCCESS;
}
CONFORME A
Tanto getline() como getdelim() son extensiones de GNU. Estan
disponibles desde libc 4.6.27.
V'EASE TAMBI'EN
read(2), fopen(3), fread(3), gets(3), fgets(3), scanf(3)