Man Pages

getline(3) - phpMan getline(3) - phpMan

Command: man perldoc info search(apropos)  


GETLINE(3)                 Linux Programmer's Manual                GETLINE(3)



NAME
       getline, getdelim - delimited string input

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

DESCRIPTION
       getline()  reads  an  entire  line  from  stream,  storing  the  address of the buffer containing the text into
       *lineptr.  The buffer is null-terminated and includes the newline character, if one was found.

       If *lineptr is NULL, then getline() will allocate a buffer for storing the line, which should be freed  by  the
       user program.  (The value in *n is ignored.)

       Alternatively,  before  calling  getline(),  *lineptr  can contain a pointer to a malloc(3)-allocated buffer *n
       bytes in size.  If the buffer is not large enough to hold the  line,  getline()  resizes  it  with  realloc(3),
       updating *lineptr and *n as necessary.

       In  either  case, on a successful call, *lineptr and *n will be updated to reflect the buffer address and allo-
       cated size respectively.

       getdelim() works like getline(), except a line delimiter other than newline can be specified as  the  delimiter
       argument.  As with getline(), a delimiter character is not added if one was not present in the input before end
       of file was reached.

RETURN VALUE
       On success, getline() and getdelim() return the number of characters read, including the  delimiter  character,
       but  not including the terminating null byte.  This value can be used to handle embedded null bytes in the line
       read.

       Both functions return -1  on failure to read a line (including end of file condition).

ERRORS
       EINVAL Bad arguments (n or lineptr is NULL, or stream is not valid).

CONFORMING TO
       Both getline() and getdelim() are GNU extensions.  They are available since libc 4.6.27.

EXAMPLE
       #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);
           exit(EXIT_SUCCESS);
       }

SEE ALSO
       read(2), fgets(3), fopen(3), fread(3), gets(3), scanf(3), feature_test_macros(7)

COLOPHON
       This page is part of release 3.22 of the Linux man-pages project.  A description of the project,  and  informa-
       tion about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/.



GNU                               2006-05-17                        GETLINE(3)