Provided by: manpages-es_1.55-10_all bug

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)