GETDELIM(3) | Library Functions Manual | GETDELIM(3) |
getdelim
, getline
—
#include <stdio.h>
ssize_t
getdelim
(char
** restrict lineptr,
size_t * restrict n,
int delimiter,
FILE * restrict
stream);
ssize_t
getline
(char
** restrict lineptr,
size_t * restrict n,
FILE * restrict
stream);
getdelim
() function reads from the
stream until it encounters a character matching
delimiter or EOF
, storing the
input in *lineptr. The buffer is
NUL
-terminated and includes
the delimiter, if one was found. The delimiter character
must be representable as an unsigned char.
If *n is non-zero, then
*lineptr must be pre-allocated to at least
*n bytes. The buffer should be allocated dynamically;
it must be possible to free(3)
*lineptr. getdelim
() ensures
that *lineptr is large enough to hold the input,
updating *n to reflect the new size.
The getline
() function is equivalent to
getdelim
() with delimiter set
to the newline character.
getdelim
() and getline
()
functions return the number of characters read, including the delimiter if one
was found. If no characters were read and the stream is at end-of-file, the
functions return -1. If an error occurs, the functions return -1 and the
global variable errno is set to indicate the error.
The functions do not distinguish between end-of-file and error, and callers must use feof(3) and ferror(3) to determine which occurred.
char *line = NULL; size_t linesize = 0; ssize_t linelen; while ((linelen = getline(&line, &linesize, fp)) != -1) fwrite(line, linelen, 1, stdout); if (ferror(fp)) perror("getline");
EINVAL
]NULL
pointer.EOVERFLOW
]The getdelim
() and
getline
() functions may also fail and set
errno for any of the errors specified in the routines
fflush(3),
malloc(3),
read(2),
stat(2), or
realloc(3).
getdelim
() and getline
()
functions conform to IEEE Std 1003.1-2008
(“POSIX.1”).
getdelim
() and getline
()
functions can return results that include NUL
characters, which can cause the apparent length reported by
strlen(3) to be less than the
true length reported by the return values of the functions.
September 15, 2014 | NetBSD 9.2 |