C-style file input/output

< cpp‎ | io
Revision as of 16:43, 16 December 2012 by Cubbi (Talk | contribs)


The C I/O subset of the C++ standard library implements C-style stream input/output operations. The <cstdio> header provides generic file operation support and supplies functions with narrow and multibyte character input/output capabilities, and the <cwchar> header provides functions with wide character input/output capabilities.

C streams are objects of type std::FILE that can only be accessed and manipulated through pointers of type std::FILE* (Note: while it may be possible to create a local object of type std::FILE by dereferencing and copying a valid FILE*, using the address of such copy in the I/O functions is undefined behavior). Each C stream is associated with an external physical device (file, standard input stream, printer, serial port, etc).

C streams can be used for both unformatted and formatted input and output. They are locale-sensitive and may perform wide/multibyte conversions as necessary. Unlike C++ streams, where each stream is associated with its own locale, all C streams access the same locale object: the one most recently installed with std::setlocale.

Besides the system-specific information necessary to access the device (e.g. a POSIX file descriptor), each C stream object holds the following:

1) Character width: narrow or wide
2) Buffering state: unbuffered, line-buffered, fully buffered.
3) The buffer, which may be replaced by an external, user-provided buffer.
4) I/O mode: input, output, or update (both input and output).
5) Binary/text mode indicator.
6) End-of-file status indicator.
7) Error status indicator.
8) File position indicator (an object of type std::fpos_t), which, for wide character streams, includes the parse state (an object of type std::mbstate_t).



Template:cpp/io/c/dcl list fopenTemplate:cpp/io/c/dcl list freopenTemplate:cpp/io/c/dcl list fcloseTemplate:cpp/io/c/dcl list fflushTemplate:cpp/io/c/dcl list fwideTemplate:cpp/io/c/dcl list setbufTemplate:cpp/io/c/dcl list setvbufTemplate:cpp/io/c/dcl list freadTemplate:cpp/io/c/dcl list fwriteTemplate:cpp/io/c/dcl list fgetcTemplate:cpp/io/c/dcl list fgetsTemplate:cpp/io/c/dcl list fputcTemplate:cpp/io/c/dcl list fputsTemplate:cpp/io/c/dcl list getcharTemplate:cpp/io/c/dcl list getsTemplate:cpp/io/c/dcl list putcharTemplate:cpp/io/c/dcl list putsTemplate:cpp/io/c/dcl list ungetcTemplate:cpp/io/c/dcl list fgetwcTemplate:cpp/io/c/dcl list fgetwsTemplate:cpp/io/c/dcl list fputwcTemplate:cpp/io/c/dcl list fputwsTemplate:cpp/io/c/dcl list getwcharTemplate:cpp/io/c/dcl list putwcharTemplate:cpp/io/c/dcl list ungetwcTemplate:cpp/io/c/dcl list fscanfTemplate:cpp/io/c/dcl list vfscanfTemplate:cpp/io/c/dcl list fprintfTemplate:cpp/io/c/dcl list vfprintfTemplate:cpp/io/c/dcl list fwscanfTemplate:cpp/io/c/dcl list vfwscanfTemplate:cpp/io/c/dcl list fwprintfTemplate:cpp/io/c/dcl list vfwprintfTemplate:cpp/io/c/dcl list ftellTemplate:cpp/io/c/dcl list fgetposTemplate:cpp/io/c/dcl list fseekTemplate:cpp/io/c/dcl list fsetposTemplate:cpp/io/c/dcl list rewindTemplate:cpp/io/c/dcl list clearerrTemplate:cpp/io/c/dcl list feofTemplate:cpp/io/c/dcl list ferrorTemplate:cpp/io/c/dcl list perrorTemplate:cpp/io/c/dcl list removeTemplate:cpp/io/c/dcl list renameTemplate:cpp/io/c/dcl list tmpfileTemplate:cpp/io/c/dcl list tmpnam
File access
Direct input/output
Unformatted input/output
Narrow character
Wide character
Formatted input/output
Narrow/multibyte character
Wide character
File positioning
Error handling
Operations on files


Defined in header <cstdio>
Type Definition
FILE type, capable of holding all information needed to control a C I/O stream
fpos_t type, capable of uniquely specifying a position in a file


Defined in header <cstdio>
expression of type FILE* associated with the input stream
expression of type FILE* associated with the output stream
expression of type FILE* associated with the error output stream
(macro constant)
integer constant expression of type int and negative value
(macro constant)
number of files that can be open simultaneously
(macro constant)
size needed for an array of char to hold the longest supported file name
(macro constant)
size of the buffer used by std::setbuf
(macro constant)
argument to std::setbuf indicating fully buffered I/O
argument to std::setbuf indicating line buffered I/O
argument to std::setbuf indicating unbuffered I/O
(macro constant)
argument to std::fseek indicating seeking from beginning of the file
argument to std::fseek indicating seeking from the current file position
argument to std::fseek indicating seeking from end of the file
(macro constant)
maximum number of unique filenames that can be generated by std::tmpnam
(macro constant)
size needed for an array of char to hold the result of std::tmpnam
(macro constant)