FGETC(2)                                                 FGETC(2)

     NAME
          fgetc, getc, getchar, fputc, putc, putchar, ungetc, fgets,
          gets, fputs, puts, fread, fwrite - Stdio input and output

     SYNOPSIS
          #include <u.h>
          #include <stdio.h>

          int  fgetc(FILE *f)

          int  getc(FILE *f)

          int  getchar(void)

          int  fputc(int c, FILE *f)

          int  putc(int c, FILE *f)

          int  putchar(int c)

          int  ungetc(int c, FILE *f)

          char *fgets(char *s, int n, FILE *f)

          char *gets(char *s)

          int  fputs(char *s, FILE *f)

          int  puts(char *s)

          long fread(void *ptr, long itemsize, long nitems, FILE
          *stream)

          long fwrite(void *ptr, long itemsize, long nitems, FILE
          *stream)

     DESCRIPTION
          The functions described here work on open Stdio streams (see
          fopen).

          Fgetc returns as an int the next unsigned char from input
          stream f. If the stream is at end-of-file, the end-of-file
          indicator for the stream is set and fgetc returns EOF.  If a
          read error occurs, the error indicator for the stream is set
          and fgetc returns EOF.  Getc is like fgetc except that it is
          implemented as a macro.  Getchar is like getc except that it
          always reads from stdin.

          Ungetc pushes character c back onto the input stream f.  The
          pushed-back character will be returned by subsequent reads

     Page 1                       Plan 9             (printed 3/19/24)

     FGETC(2)                                                 FGETC(2)

          in the reverse order of their pushing.  A successful inter-
          vening fseek, fsetpos, or rewind on f discards any pushed-
          back characters for f. One character of push-back is guaran-
          teed.  Ungetc returns the character pushed back (converted
          to unsigned char), or EOF if the operation fails.  A suc-
          cessful call to ungetc clears the end-of-file indicator for
          the stream.  The file position indicator for the stream
          after reading or discarding all pushed-back characters is
          the same as it was before the characters were pushed back.

          Fputc writes character c (converted to unsigned char) to
          output stream f at the position indicated by the position
          indicator for the stream and advances the indicator appro-
          priately.  If the file cannot support positioning requests,
          or if the stream was opened with append mode, the character
          is appended to the output stream.  Fputc returns the charac-
          ter written or EOF if there was a write error.  Putc is like
          fputc but is implemented as a macro.  Putchar is like putc
          except that it always writes to stdout.

          All other input takes place as if characters were read by
          successive calls to fgetc and all other output takes place
          as if characters were written by successive calls to fputc.

          Fgets reads up to and including the next newline, but not
          past end-of-file or more than n-1 characters, from stream f
          into array s. A null character is written immediately after
          the last character read into the array (if any characters
          are read at all).  Fgets returns s if successful, otherwise
          a null pointer.  Gets is similar to fgets except that it
          always reads from stdin and it discards the terminating new-
          line, if any.  Gets does not check for overflow of the
          receiving array, so its use is deprecated.

          Fputs writes the string s to  stream f, returning EOF if a
          write error occurred, otherwise a nonnegative value.  The
          terminating null character is not written.  Puts is the
          same, writing to stdout.

          Fread reads from the named input stream at most nitems of
          data of size itemsize and the type of *ptr into a block
          beginning at ptr. It returns the number of items actually
          read.

          Fwrite appends to the named output stream at most nitems of
          data of size itemsize and the type of *ptr from a block
          beginning at ptr. It returns the number of items actually
          written.

     SOURCE
          /sys/src/libstdio

     Page 2                       Plan 9             (printed 3/19/24)

     FGETC(2)                                                 FGETC(2)

     SEE ALSO
          read(2), fopen(2), bio(2)

     BUGS
          Stdio does not handle UTF or runes; use Bio instead.

     Page 3                       Plan 9             (printed 3/19/24)