C PROGRAMMING

File Input And Output

Article by:
Date Published:
Last Modified:

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:

1
FILE *fopen(const char *filename, const char *mode);

In C99 and above:

1
FILE *fopen(const char *restrict filename, const char *restrict mode);

where:

filename: Null-terminated string of the filename to associate the data to
mode: Null-terminated string that determines the file access mode
\
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.


Authors

Geoffrey Hunter

Dude making stuff.

Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 International License .

Tags

comments powered by Disqus
Page contents: