NAME

     fopen, freopen, fdopen - open a stream


SYNOPSIS

     #include <stdio.h>

     FILE *fopen(const char *filename, const char *type)
     FILE *freopen(const char *filename, const char *type, FILE *stream)
     FILE *fdopen(int fildes, const char *type)


DESCRIPTION

     Fopen opens the file named  by  filename  and  associates  a
     stream with it.  Fopen returns a pointer to be used to iden-
     tify the stream in subsequent operations.

     Type is a character  string  having  one  of  the  following
     values:

     "r"  open for reading

     "w"  create for writing

     "a"  append: open for writing at end of file, or create  for
          writing

     In addition, each type may be followed by a "+" to have  the
     file  opened  for  reading  and writing.  "r+" positions the
     stream at the beginning of the file, "w+" creates  or  trun-
     cates  it, and "a+" positions it at the end.  Both reads and
     writes may be used on read/write streams, with  the  limita-
     tion  that  an fseek, rewind, or reading an end-of-file must
     be used between a read and a write or vice-versa.

     Freopen substitutes the named file  in  place  of  the  open
     stream.   It returns the original value of stream.  The ori-
     ginal stream is closed.

     Freopen is typically used to attach the  preopened  constant
     names, stdin, stdout, stderr, to specified files.

     Fdopen associates a stream with a file  descriptor  obtained
     from  open,  dup, creat, or pipe(2).  The type of the stream
     must agree with the mode of the open file.


SEE ALSO

     open(2), fclose(3).


DIAGNOSTICS

     Fopen and freopen return the pointer NULL if filename cannot
     be accessed, if too many files are already open, or if other
     resources needed cannot be allocated.


BUGS

     Fdopen is not portable to systems other than UNIX.

     The read/write types do not exist  on  all  systems.   Those
     systems  without  read/write  modes  will probably treat the
     type as if the "+" was not present.  These are unreliable in
     any event.