Name | Description | Notes | Source | Availability | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|
FOPEN_ |
Maximum number of open files | M | <stdio.h> |
C89 | C90 | C95 | C99 | C11 | |||
fopen() |
Open file as stream | (·) | <stdio.h> |
C89 | C90 | C95 | C99 | C11 | |||
fopen_s() |
Open file as stream | (·) | <stdio.h> |
C11 | |||||||
freopen() |
Re-open stream | (·) | <stdio.h> |
C89 | C90 | C95 | C99 | C11 | |||
freopen_s() |
Re-open stream | (·) | <stdio.h> |
C11 |
#include <stdio.h>
FILE *fopen(const char *name, const char *mode);
FILE *freopen(const char *name, const char *mode, FILE *stream);
A new stream is
opened and associated with a file using fopen
,
which returns NULL
on failure. name
is the name of the file, and mode
indicates how to access it:
mode |
Format | Read | Write | Initial position | If file exists | If file does not exist |
---|---|---|---|---|---|---|
r | Text | Yes | Start | Fail | ||
rb | Binary | Yes | Start | Fail | ||
r+ | Text | Yes | Yes | Start | Fail | |
rb+ or r+b | Binary | Yes | Yes | Start | Fail | |
w | Text | Yes | Start | Truncate | Create | |
wb | Binary | Yes | Start | Truncate | Create | |
w+ | Text | Yes | Yes | Start | Truncate | Create |
wb+ or w+b | Binary | Yes | Yes | Start | Truncate | Create |
wx | Text | Yes | Start | Fail | Create | |
wbx | Binary | Yes | Start | Fail | Create | |
w+x | Text | Yes | Yes | Start | Fail | Create |
wb+x or w+bx | Binary | Yes | Yes | Start | Fail | Create |
a | Text | Yes | End | Create | ||
ab | Binary | Yes | End | Create | ||
a+ | Text | Yes | Yes | End | Create | |
ab+ or a+b | Binary | Yes | Yes | End | Create |
freopen
takes an existing stream, closes it, and re-opens it on
another file, returning stream
on
success, and NULL
on failure. It is most
useful for redirecting streams such as stdin
, stdout
and stderr
to other files.
#define __STDC_WANT_ 1 #includeLIB_ EXT1__ <stdio.h>
errno_t fopen_s(FILE **pstr, const char *name, const char *mode); errno_t freopen_s(FILE **pstr, const char *name, const char *mode, FILE *stream);
From C11, fopen_s
and freopen_s
are provided. These differ from fopen
and freopen
in
that they do not return stream handles, but instead write the
new handles to *pstr
if pstr
is not null. On error, they set *pstr
to null and return non-zero.
fopen
and freopen
also
influence permissions on newly created files. Such files will
not be accessible to ‘others’, for example, other users, if
the environment has such a notion. There are also twelve
additional values for mode
. A prefix
of u on all modes that support file creation
indicates that the created file will have default permissions
by the time the stream is closed.
Upto FOPEN_
streams can be open at once.