FOPEN - open a file for I/O.
(ANSI Standard)
Usage:
#include <stdio.h>
ret = fopen( name, options )
Where:
- const char *name;
- is a string containing the name of the file to be opened.
- const char *options;
- is a string specifying whether the file should be opened for reading or writing (see
below).
- FILE *ret;
- is a "file pointer". This points to a structure that contains information
needed for subsequent I/O on the file being opened. This file pointer is used by most I/O
functions.
Description:
"fopen" opens a file for subsequent reading or writing. If successful,
"fopen" returns a pointer-to-structure; if it fails, it returns NULL.
"name" is the file descriptor for a file. The file will be created (if
necessary) if "options" includes "w" or "a". In Batch GCOS,
file code 'XX' can be directly accessed using a filename of "fc*XX". In TSS, a
name of the form "fc*anything" always refers to a file in the AFT. If the
filename has any other format, "fopen" tries to access it as a permfile.
"options" points to a string containing one of
- r
- open for reading.
- w
- open for writing.
- a
- open for appending.
- r+
- open for both reading and writing. The stream will be positioned at the beginning of the
file.
- w+
- open for both reading and writing. The stream will be created if it does not exist, and
will be truncated if it does exist.
- a+
- open for both reading and writing. The stream will be positioned at the end of the
existing file content.
- rb
- open for reading. The 'b' indicates binary data (as opposed to text); by default, this
will be a sequential file in Media 4 format.
- wb
- open for writing. The 'b' indicates binary data.
- ab
- open for appending. The 'b' indicates binary data.
Several additional options can be specified by adding one or more letters to the
possibilities listed above. All of the following options are unique to the GCOS-8 version
of C and will not be portable to other implementations.
- d
- tells "fopen" to abort the program (die) with an error message if an error
occurs in the open operation or in I/O performed later on the opened file.
- e
- displays an error message (on "stderr") if an error occurs in the open
operation or in any I/O performed later on the opened file. In this case, the program is
not aborted; the I/O function that finds the error will return the normal error status (if
any) once the message has been printed.
- o
- opens the file for some purpose "other" than character or record processing.
The file will be accessed random, no buffer will be allocated for processing SSF records.
Only block mode I/O routines like "_rblock" and "_wblock" may be used
to manipulate the file. If you do not specify this option, the default is to open the file
for character stream or record processing.
- s
- tells "fopen" that you are opening a string for I/O instead of a normal file.
In this instance, the "filename" argument is a pointer to the string being
opened.
- t
- makes the file Transient, so that it is detached from the job when it is closed. If the
file is a temporary file in the AFT under TSS, the file will be removed and therefore
deleted.
- u
- generates a unique AFT name for the file if a duplicate name is already in the AFT.
Examples:
/* open file "uid/f" for writing binary */
f1 = fopen("uid/f", "wb");
/* open the string "str" for reading */
char *str;
f2 = fopen(str, "rs");
/* open file with unique AFT name, remove when done */
f3 = fopen("x","w+btu");
Notes:
When you specify "r+", you indicate that you want to read the file before you
write to it. Thus the file must already exist.
When a file is opened with a "+" option, you may both read and write on it.
However, you may not perform an output operation immediately after an input operation; you
must perform an intervening "rewind" or "fseek". Similarly, you may
not perform an input operation immediately after an output operation; you must perform an
intervening "rewind" or "fseek".
The use of the 'b' or '+' options cause the file to be written in fixed-length,
318-word media 4 GFRC records. The length of the last record is adjusted to suit to actual
length (in bytes) of the file. Since the file is not one of the standard text media codes,
such a file cannot, in general, be read by other programs, unless they too are written in
C and open the file with 'b' or '+' options.
When a file is opened for appending, it is impossible to overwrite the existing
contents of the file. Every write operation automatically begins with a seek to the
current end of the file. For example, if you use "fseek" or "fsetpos"
to move into the middle of the file and then try a write operation, the library will
automatically move back to the end of the file before the write takes place. This behavior
is required by the ANSI standard for C.
See Also:
expl c lib fclose
expl c lib fseek
expl c lib rewind
expl nsc lib _rblock
expl c lib _wblock
Copyright © 2000, Thinkage Ltd.