C file input/output: Difference between revisions

Content deleted Content added
m grammar
Fixed up a section
Line 7:
:<code>FILE * freopen(const char *path, const char *mode, FILE * restrict stream);</code>
 
The <code>fdopen</code> function is not standard in C89 or C99, but is an extension used in POSIX environments and imitated elsewhere.
In some libraries, <code>mode</code> can include a letter '''b''', which indicates the given file is a [[binary file]]. Without that, a sequence of [[carriage return]] and [[line feed]] is automatically regarded as a line feed. See [[new line]] for new line issues.
 
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 [[MS-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.