| 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.
