The freopen Function.
The freopen function
in the C Standard I/O library <cstdio> is a useful to redirect output destined
for the stdout to a text file. I
discussed how to use the fprintf
function to send output to either a text file or the stdout. See here.
The same result is achieved here using the printf
and freopen functions.
Method 1.
freopen(Filename, "w", stdout);
There is no return value to indicate if the file was opened
or if there was an error.
Method 2.
iReturn = freopen(Filename, "w", stdout);
On failure, a null pointer is returned otherwise the return
value is a pointer to the file. Beyond testing for an error, this return value
is used to close the file.
fclose(iReturn);
While my example uses the stdout, the freopen
function can be used with the stdin and stderr
objects.
Test Code.
I tested the functions in Visual C++ 2010 as an console
application.
// The
standard library includes the system function.
#include <cstdlib>
// C++
standard I/O library.
#include <cstdio>
int main()
{
//**************************************************************
// Redirect
stdout to a file.
// Declare
pointer to the file.
FILE* pFileHandle;
char
Filename[] = "MyFile.txt";
// Returns null
is the open failed.
pFileHandle = freopen(Filename, "w", stdout);
printf("pFileHandle
is %X.\n\n", pFileHandle);
//**************************************************************
// Header.
printf("Using
freopen in C & C++\n\n");
//**************************************************************
// Some use of
printf.
printf("Sending
the printf output to a file instead of the stdout.\n");
printf("The
freopen function allows for this redirection.\n\n");
// Use variable
for a string.
char * Text
= "A text string only from a
variable.\n\n";
printf("%s",
Text);
// Int type.
int Salary
= 375000;
int Bonus =
-35000;
printf("Salary
is: %8d.\n", Salary);
printf("Bonus is: %8d.\n", Bonus);
printf("\n");
//**************************************************************
// Close the
file.
fclose(pFileHandle);
// Keep console
window open.
system("pause");
// Return some
value.
return 0;
} // end main
Output.
No comments:
Post a Comment