Provided by: manpages-es_1.55-8_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ÓN

       getline() lee una línea entera, almacenando la dirección del buffer que
       contiene el texto en *lineptr.  Al final del buffer se coloca el  valor
       null  y  además  se  incluye  el carácter nueva línea si se encontró el
       delimitador nueva línea.

       Si *lineptr es NULL, la  rutina  getline()  reservará  un  buffer  para
       contener  la  línea,  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 tamaño *n bytes. Si el
       buffer no es lo suficientemente grande para almacenar la  línea  leída,
       getline()   redimensiona  el  buffer  para  que  quepa  con  realloc(),
       actualizando *lineptr y *n si es necesario. En cualquier  caso,  si  la
       llamada  tiene éxito, *lineptr y *n serán actualizados para reflejar la
       dirección del buffer y el tamaño respectivamente.

       getdelim() funciona como getline(), salvo que se puede especificar otro
       delimitador de línea distinto de nueva línea en el argumento delimiter.
       Como con getline(), no se añade  un  carácter  delimitador  si  no  hay
       ninguno  presente  en  la  entrada  antes  de que se alcanze el fin del
       fichero.

VALOR DEVUELTO

       En caso de  éxito,  getline()  y  getdelim()  devuelven  el  número  de
       caracteres leídos, incluyendo el carácter delimitador, pero sin incluir
       el carácter null del final. Este valor puede usarse  para  manejar  los
       carácters null embebidos en la línea leída.

       Ambas funciones devuelven -1 si fallan al leer una línea (incluyendo la
       condición de fin de fichero).

ERRORES

       EINVAL Parámetros incorrectos (n o lineptr son NULL,  o  stream  no  es
              válido).

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.   Están
       disponibles desde libc 4.6.27.

VÉASE TAMBIÉN

       read(2), fopen(3), fread(3), gets(3), fgets(3), scanf(3)