xref: /original-bsd/lib/libc/stdio/fgets.3 (revision ae291b9c)
Copyright (c) 1990 The Regents of the University of California.
All rights reserved.

This code is derived from software contributed to Berkeley by
Chris Torek.

%sccs.include.redist.man%

@(#)fgets.3 6.5 (Berkeley) 01/20/91

FGETS 3 ""
C 7
NAME
fgets, gets - get a line from a stream
SYNOPSIS
#include <stdio.h>

char *
fgets(char *str, size_t size, FILE *stream);

char *
gets(char *str);
DESCRIPTION
Fgets reads at most one less than the number of characters specified by size from the given stream into the string str . Reading stops when a newline character is found, at end-of-file or error. The newline, if any, is retained. In any case a '\e0' character is appended to end the string.

Gets is equivalent to fgets with an infinite size and a stream of stdin , except that the newline character (if any) is not stored in the string. It is the caller's responsibility to ensure that the input line, if any, is sufficiently short to fit in the string.

"SEE ALSO"
feof(3), ferror(3), fgetline(3)
"RETURN VALUE"

Upon successful completion, fgets and gets return s . If end-of-file or an error occurs before any characters are read, they return NULL. Callers must use feof and ferror to determine which occurred.

ERRORS

15 [EBADF] Stream is not a readable stream.

Fgets may also fail and set errno for any of the errors specified for the routines fflush (3), fstat (2), read (2), or malloc (3).

Gets may also fail and set errno for any of the errors specified for the routine getchar (3).

BUGS
Since it is usually impossible to ensure that the next input line is less than some arbitrary length, and because overflowing the input buffer is almost invariably a security violation, programs should NEVER use gets . Gets exists purely to conform to ANSI X3.159-1989.
STANDARDS
Fgets and gets conform to ANSI X3.159-1989 (``ANSI C'').