Mac Developer Library Developer


This manual page is part of Xcode Tools version 5.0

To obtain these tools:

If you are running a version of Xcode Tools other than 5.0, view the documentation locally:

  • In Xcode

  • In Terminal, using the man(1) command

Reading manual pages

Manual pages are intended as a quick reference for people who already understand a technology.

  • To learn how the manual is organized or to learn about command syntax, read the manual page for manpages(5).

  • For more information about this technology, look for other documentation in the Apple Developer Library.

  • For general information about writing shell scripts, read Shell Scripting Primer.

FGETS(3)                 BSD Library Functions Manual                 FGETS(3)

     fgets, gets -- get a line from a stream

     Standard C Library (libc, -lc)

     #include <stdio.h>

     char *
     fgets(char * restrict str, int size, FILE * restrict stream);

     char *
     gets(char *str);

     The fgets() function reads at most one less than the number of characters specified by size from the
     given stream and stores them in the string str.  Reading stops when a newline character is found, at
     end-of-file or error.  The newline, if any, is retained.  If any characters are read and there is no
     error, a `\0' character is appended to end the string.

     The gets() function 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.

     Upon successful completion, fgets() and gets() return a pointer to the string.  If end-of-file occurs
     before any characters are read, they return NULL and the buffer contents remain unchanged.  If an error
     occurs, they return NULL and the buffer contents are indeterminate.  The fgets() and gets() functions
     do not distinguish between end-of-file and error, and callers must use feof(3) and ferror(3) to deter-mine determine
     mine which occurred.

     [EBADF]            The given stream is not a readable stream.

     The function 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).

     The function gets() may also fail and set errno for any of the errors specified for the routine

     The gets() function cannot be used securely.  Because of its lack of bounds checking, and the inability
     for the calling program to reliably determine the length of the next incoming line, the use of this
     function enables malicious users to arbitrarily change a running program's functionality through a
     buffer overflow attack.  It is strongly suggested that the fgets() function be used in all cases.  (See
     the FSA.)

     feof(3), ferror(3), fgetln(3), fgetws(3), getline(3)

     The functions fgets() and gets() conform to ISO/IEC 9899:1999 (``ISO C99'').

BSD                              June 4, 1993                              BSD

Reporting Problems

The way to report a problem with this manual page depends on the type of problem:

Content errors
Report errors in the content of this documentation with the feedback links below.
Bug reports
Report bugs in the functionality of the described tool or API through Bug Reporter.
Formatting problems
Report formatting mistakes in the online version of these pages with the feedback links below.