Fopen
|
- The title of this article is incorrect because of technical limitations. The correct title is "fopen".
In computer programming, the fopen
function is one of the basic functions in the C programming language. It returns an I/O stream attached to the specified file or other device from which reading and writing can be done. Because the functionality is so useful, many languages derived from C provide functions of the same name, with the same or similar function: for example, PHP. fopen
is considered higher-level than the open
system call of UNIX operating systems. The related C library function freopen
performs the same operation after first closing any open stream associated with its parameter.
They are defined as
FILE * fopen(const char *path, const char *mode);
FILE * fdopen(int fildes, const char *mode);
FILE * freopen(const char *path, const char *mode, FILE * restrict stream);
The fdopen
function is not standard in C89 or C99, but is an extension used in POSIX environments and imitated elsewhere.
The mode parameter is a string that begins with one of the following sequences:
r Open a text file for reading w Truncate file to zero length or create text file for writing a Append: open or create text file for writing at end-of-file rb Open a binary file for reading wb Truncate file to zero length or create binary file for writing ab Append: open or create binary file for writing at end-of-file r+ Open text file for update (reading and writing) w+ Truncate file to zero length or create text file for update a+ Append: open or create text file for update, writing at end-of-file r+b or rb+ Open binary file for update (reading and writing) w+b or wb+ Truncate file to zero length or create binary file for update a+b or ab+ Append: open or create binary file for update, writing at end-of-file
The C standard gives two kinds of files — text files and binary files — although operating systems may or may not distinguish between the two. A text file is a file consisting of text arranged in lines with some sort of distinguishing end-of-line character or sequence (in Unix, a bare linefeed character; in the Macintosh OS, a bare carriage return; on DOS and Microsoft Windows, a carriage return followed by a linefeed). When bytes are read in from a text file, an end-of-line sequence is usually mapped to a linefeed for ease in processing. When a text file is written to, a bare linefeed is mapped to the OS-specific end-of-line character sequence before writing. A binary file is a file where bytes are read in "raw," and delivered "raw," without any kind of mapping.