Share via


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

System::IO::FileStream::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, getws, 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

Reference

Input and Output

Run-Time Routines by Category