File Input And Output
The standard C library provides functions for writing input and output to files.
Most of the file input/output functions are declared in header stdio.h. Add the line #include <stdio.h>
to your source code to use file I/O functions.
fopen()
fopen()
is used to open a file.
The function declaration changed in C99, by adding the keyword restrict. Before C99 it was:
In C99 and above:
where:
mode | Stands For | Description | Behaviour If File Already Exists | Behaviour If File Doesn’t Exist | \
---|---|---|---|---|
“r” | read | Open a file to read from it. | Read from start. | Error. |
”w” | write | Open a file to write to it. | Delete file contents. | Create new file. |
”wx” | write | Write to file, but don’t overwrite if file already exists. | Error. | Create new file |
”a” | append | Open a file to append data to the end. | Append new data to the end of file. | Create new file. |
”r+“ | read extended | Opens a file for read/write access | Read from start. | Error. |
”w+“ | write extended | Creates a file for read/write access | Deletes file contents. | Create new file. |
”w+x” | write extended | Opens a file for read/write access, but doesn’t overwrite if file already exists. | Error. | Create new file. |
”a+“ | append extended | Opens a file for read/write access | Appends new data to the end of file. | Create new file. |
b | binary open | Opens a file in binary mode (Windows only). | ? | ? |
fopen()
returns pointer to opened file stream on success, otherwise a NULL
pointer on fail.
You have to be careful when using fopen()
on a system with multiple threads, there is the possibility of creating race conditions.