Stream I/O

 

The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.

The latest version of this topic can be found at Stream I-O.

These functions process data in different sizes and formats, from single characters to large data structures. They also provide buffering, which can improve performance. The default size of a stream buffer is 4K. These routines affect only buffers created by the run-time library routines, and have no effect on buffers created by the operating system.

Stream I/O Routines

Routine Use .NET Framework equivalent
clearerr, clearerr_s Clear error indicator for stream Not applicable. To call the standard C function, use PInvoke. For more information, see Platform Invoke Examples.
fclose Close stream System::IO::Stream::Close, System::IO::BinaryReader::Close, System::IO::BinaryWriter::Close, System::IO::TextReader::Close, System::IO::TextWriter::Close, System::IO::StringReader::Close, System::IO::StringWriter::Close, System::IO::StreamReader::Close, System::IO::StreamWriter::Close
_fcloseall Close all open streams except stdin, stdout, and stderr System::IO::Stream::Close, System::IO::BinaryReader::Close, System::IO::BinaryWriter::Close, System::IO::TextReader::Close, System::IO::TextWriter::Close, System::IO::StringReader::Close, System::IO::StringWriter::Close, System::IO::StreamReader::Close, System::IO::StreamWriter::Close
_fdopen, wfdopen Associate stream with file descriptor of open file FileStream
feof Test for end of file on stream System::IO::FileStream::Read
ferror Test for error on stream Not applicable. To call the standard C function, use PInvoke. For more information, see Platform Invoke Examples.
fflush Flush stream to buffer or storage device System::IO::FileStream::Flush
fgetc, fgetwc Read character from stream (function versions of getc and getwc) System::IO::StreamReader::Read
_fgetchar, _fgetwchar Read character from stdin (function versions of getchar and getwchar) System::Console::Read
fgetpos Get position indicator of stream System::IO::FileStream::Position
fgets, fgetws Read string from stream System::IO::StreamReader::ReadLine, System::IO::TextReader::ReadBlock
_fileno Get file descriptor associated with stream System::IO::FileStream::Handle
_flushall Flush all streams to buffer or storage device System::IO::FileStream::Flush, System::IO::StreamWriter::Flush, System::IO::TextWriter::Flush, System::IO::BinaryWriter::Flush
fopen, _wfopen, fopen_s, _wfopen_s Open stream System::IO::File::Open
fprintf, _fprintf_l, fwprintf, _fwprintf_l, fprintf_s, _fprintf_s_l, fwprintf_s, _fwprintf_s_l Write formatted data to stream System::IO::StreamWriter::Write
fputc, fputwc Write a character to a stream (function versions of putc and putwc) System::IO::StreamWriter::Write
_fputchar, _fputwchar Write character to stdout (function versions of putchar and putwchar) System::Console::Write
fputs, fputws Write string to stream System::IO::StreamWriter::Write
fread Read unformatted data from stream System::IO::FileStream::Read
freopen, _wfreopen, freopen_s, _wfreopen_s Reassign FILE stream pointer to new file or device System::IO::File::Open
fscanf, fwscanf, fscanf_s, _fscanf_s_l, fwscanf_s, _fwscanf_s_l Read formatted data from stream System::IO::StreamReader::ReadLine; see also Parse methods, such as System::Double::Parse.
fseek, _fseeki64 Move file position to given location System::IO::FileStream::Position, System::IO::FileStream::Seek
fsetpos Set position indicator of stream System::IO::FileStream::Position
_fsopen, _wfsopen Open stream with file sharing Not applicable. To call the standard C function, use PInvoke. For more information, see Platform Invoke Examples.
ftell, _ftelli64 Get current file position System::IO::FileStream::Position
fwrite Write unformatted data items to stream System::IO::FileStream::Write
getc, getwc Read character from stream (macro versions of fgetc and fgetwc) System::IO::StreamReader::Read
getchar, getwchar Read character from stdin (macro versions of fgetchar and fgetwchar) System::Console::Read
_getmaxstdio Returns the number of simultaneously open files permitted at the stream I/O level. Not applicable. To call the standard C function, use PInvoke. For more information, see Platform Invoke Examples.
gets_s, _getws_s Read line from stdin System::Console::Read
_getw Read binary int from stream Not applicable. To call the standard C function, use PInvoke. For more information, see Platform Invoke Examples.
printf, _printf_l, wprintf, _wprintf_l,printf_s, _printf_s_l, wprintf_s, _wprintf_s_l Write formatted data to stdout System::Console::Write
putc, putwc Write character to a stream (macro versions of fputc and fputwc) System::IO::StreamWriter::Write
putchar, putwchar Write character to stdout (macro versions of fputchar and fputwchar) System::Console::Write
puts, _putws Write line to stream System::Console::Write
_putw Write binary int to stream Not applicable. To call the standard C function, use PInvoke. For more information, see Platform Invoke Examples.
rewind Move file position to beginning of stream Not applicable. To call the standard C function, use PInvoke. For more information, see Platform Invoke Examples.
_rmtmp Remove temporary files created by tmpfile Not applicable. To call the standard C function, use PInvoke. For more information, see Platform Invoke Examples.
scanf, _scanf_l, wscanf, _wscanf_l,scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l Read formatted data from stdin System::Console::ReadLine; see also Parse methods, such as System::Double::Parse.
setbuf Control stream buffering Not applicable. To call the standard C function, use PInvoke. For more information, see Platform Invoke Examples.
_setmaxstdio Set a maximum for the number of simultaneously open files at the stream I/O level. Not applicable. To call the standard C function, use PInvoke. For more information, see Platform Invoke Examples.
setvbuf Control stream buffering and buffer size Not applicable. To call the standard C function, use PInvoke. For more information, see Platform Invoke Examples.
_snprintf, _snwprintf, _snprintf_s, _snprintf_s_l, _snwprintf_s, _snwprintf_s_l Write formatted data of specified length to string Not applicable. To call the standard C function, use PInvoke. For more information, see Platform Invoke Examples.
_snscanf, _snwscanf, _snscanf_s, _snscanf_s_l, _snwscanf_s, _snwscanf_s_l Read formatted data of a specified length from the standard input stream. Not applicable. To call the standard C function, use PInvoke. For more information, see Platform Invoke Examples.
sprintf, swprintf, sprintf_s, _sprintf_s_l, swprintf_s, _swprintf_s_l Write formatted data to string System::String::Format
sscanf, swscanf, sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l Read formatted data from string See Parse methods, such as System::Double::Parse
_tempnam, _wtempnam Generate temporary filename in given directory Not applicable. To call the standard C function, use PInvoke. For more information, see Platform Invoke Examples.
tmpfile, tmpfile_s Create temporary file Not applicable. To call the standard C function, use PInvoke. For more information, see Platform Invoke Examples.
tmpnam, _wtmpnam, tmpnam_s, _wtmpnam_s Generate temporary filename Not applicable. To call the standard C function, use PInvoke. For more information, see Platform Invoke Examples.
ungetc, ungetwc Push character back onto stream Not applicable. To call the standard C function, use PInvoke. For more information, see Platform Invoke Examples.
_vcprintf, _vcwprintf, _vcprintf_s, _vcprintf_s_l, _vcwprintf_s, _vcwprintf_s_l Write formatted data to the console. System::Console::Write
vfprintf, vfwprintf, vfprintf_s, _vfprintf_s_l, vfwprintf_s, _vfwprintf_s_l Write formatted data to stream Not applicable. To call the standard C function, use PInvoke. For more information, see Platform Invoke Examples.
vprintf, vwprintf, vprintf_s, _vprintf_s_l, vwprintf_s, _vwprintf_s_l Write formatted data to stdout System::Console::Write
_vsnprintf, _vsnwprintf, vsnprintf_s, _vsnprintf_s, _vsnprintf_s_l, _vsnwprintf_s, _vsnwprintf_s_l Write formatted data of specified length to buffer Not applicable. To call the standard C function, use PInvoke. For more information, see Platform Invoke Examples.
vsprintf, vswprintf, vsprintf_s, _vsprintf_s_l, vswprintf_s, _vswprintf_s_l Write formatted data to buffer System::String::Format

When a program begins execution, the startup code automatically opens several streams: standard input (pointed to by stdin), standard output (pointed to by stdout), and standard error (pointed to by stderr). These streams are directed to the console (keyboard and screen) by default. Use freopen to redirect stdin, stdout, or stderr to a disk file or a device.

Files opened using the stream routines are buffered by default. The stdout and stderr functions are flushed whenever they are full or, if you are writing to a character device, after each library call. If a program terminates abnormally, output buffers may not be flushed, resulting in loss of data. Use fflush or _flushall to ensure that the buffer associated with a specified file or all open buffers are flushed to the operating system, which can cache data before writing it to disk. The commit-to-disk feature ensures that the flushed buffer contents are not lost in the event of a system failure.

There are two ways to commit buffer contents to disk:

  • Link with the file COMMODE.OBJ to set a global commit flag. The default setting of the global flag is n, for "no-commit."

  • Set the mode flag to c with fopen or _fdopen.

Any file specifically opened with either the c or the n flag behaves according to the flag, regardless of the state of the global commit/no-commit flag.

If your program does not explicitly close a stream, the stream is automatically closed when the program terminates. However, you should close a stream when your program finishes with it, as the number of streams that can be open at one time is limited. See _setmaxstdio for information on this limit.

Input can follow output directly only with an intervening call to fflush or to a file-positioning function (fseek, fsetpos, or rewind). Output can follow input without an intervening call to a file-positioning function if the input operation encounters the end of the file.

See Also

Input and Output
Run-Time Routines by Category