COHERENT manpages

This page displays the COHERENT manpage for freopen() [Open file stream for standard I/O].

List of available manpages
Index


freopen() -- STDIO Function (libc)

Open file stream for standard I/O
#include <stdio.h>
FILE *freopen (name, type, fp)
char *name, *type; FILE *fp;

freopen() reinitializes  the file stream  fp. It closes  the file currently
associated with it,  opens or creates the file name,  and returns a pointer
to the structure for use by other STDIO routines.  name names a file.

type is  a string that  consists of one  or more of  the characters ``rwa''
(for, respectively,  read, write, and  append) to indicate the  mode of the
stream.  For  further discussion  of the type  variable, see the  entry for
fopen().  freopen() differs  from  fopen() only  in that  fp specifies  the
stream to be  used.  Any stream previously associated with  fp is closed by
fclose().   freopen()  is usually  used  to change  the  meaning of  stdin,
stdout, or stderr.

Example

This example,  called match.c,  looks in argv[2]  for the pattern  given by
argv[1].  If  the pattern is found,  the line that contains  the pattern is
written into the file argv[3] or to stdout.

#include <stdio.h>
#define MAXLINE 128
char buffer[MAXLINE];

void fatal(message)
char *message;
{
    fprintf(stderr, "match: %s\n", message);
    exit(1);
}

main(argc,argv)
int argc; char *argv[];
{
    FILE *fpin, *fpout;

    if (argc != 3 && argc != 4)
        fatal("Usage: match pattern infile [outfile]");
    if ((fpin = fopen(argv[2], "r")) == NULL)
        fatal("Cannot open input file");

    fpout = stdout;
    if (argc == 4)
        if ((fpout = freopen(argv[3], "w", stdout)) == NULL)
            fatal("Cannot open output file");

    while (fgets(buffer, MAXLINE, fpin) != NULL) {
        if (pnmatch(buffer, argv[1], 1))
            fputs(buffer, stdout);
    }
    exit(0);
}

See Also

fopen(),
libc
ANSI Standard, §7.9.5.4
POSIX Standard, §8.1

Diagnostics

freopen() returns NULL if the type string is nonsense or if the file cannot
be  opened.   Currently,  only 20  FILE  structures  can  be allocated  per
program, including stdin, stdout, and stderr.