NAME

     fgetc, fgets, getc, getchar, gets, ungetc - input of charac-
     ters and strings


SYNOPSIS

     #include <stdio.h>

     int fgetc(FILE *stream));
     char *fgets(char *s, int size, FILE *stream
     int getc(FILE *stream));
     int getchar(void);
     char *gets(char *s);
     int ungetc(int c, FILE *stream));


DESCRIPTION

     fgetc() reads the next character from stream and returns  it
     as an unsigned char cast to an int, or EOF on end of file or
     error.

     getc() is equivalent to fgetc() except that it may be imple-
     mented as a macro which evaluates stream more than once.

     getchar() is equivalent to getc(stdin)).

     gets() reads a line from stdin into the buffer pointed to by
     s  until  either  a  terminating  newline  or  EOF, which it
     replaces with '\0'.  No check for  buffer  overrun  is  per-
     formed (see BUGS below).

     fgets() reads in at most one less than size characters  from
     stream  and  stores  them  into  the buffer pointed to by s.
     Reading stops after an EOF or a newline.  If  a  newline  is
     read,  it is stored into the buffer.  A '\0' is stored after
     the last character in the buffer.

     ungetc() pushes c back to stream,  cast  to  unsigned  char,
     where  it  is  available  for  subsequent  read  operations.
     Pushed - back characters will be returned in reverse  order;
     only one pushback is guaranteed.

     Calls to the functions described here can be mixed with each
     other and with calls to other input functions from the stdio
     library for the same input stream.


RETURN VALUES

     fgetc(), getc() and getchar() return the character  read  as
     an  unsigned  char  cast  to an int or EOF on end of file or
     error.

     gets() and fgets() return s on success, and NULL on error or
     when end of file occurs while no characters have been read.

     ungetc() returns c on success, or EOF on error.


CONFORMING TO

     ANSI - C, POSIX.1


BUGS

     Because it is impossible to tell without knowing the data in
     advance  how  many  characters gets() will read, and because
     gets() will continue to store characters past the end of the
     buffer,  it is extremely dangerous to use.  It has been used
     to break computer security.  Use fgets() instead.

     It is not advisable to mix calls to input functions from the
     stdio  library with low - level calls to read() for the file
     descriptor associated with the  input  stream;  the  results
     will be undefined and very probably not what you want.


SEE ALSO

     read(2), write(2), fopen(3), scanf(3), puts(3), fseek(3),