home | help
std::freopen(3) 	       C++ Standard Libary		 std::freopen(3)

NAME
     std::freopen - std::freopen

Synopsis
	Defined in header <cstdio>
	std::FILE*  freopen(  const char* filename, const char* mode, std::FILE*
     stream );

	First, attempts to close the file associated with stream,  ignoring  any
     errors. Then,
	if filename is not null, attempts to open the file specified by filename
     using mode
	as  if	by  std::fopen,  and  associates  that file with the file stream
     pointed to by
	stream. If filename is a null pointer, then the function attempts to re-
     open the file
	that is already associated with stream	(it  is  implementation  defined
     which mode
	changes are allowed in this case).

Parameters
	filename - file name to associate the file stream to
	mode	  - null-terminated character string determining new file access
     mode
	stream	 - the file stream to modify

	File access flags

	 File access	    Meaning	    Explanation      Action if file  Ac-
     tion if file
	 mode  string						already   exists
     does not exist
	"r"	       read		 Open a file for    read from start  re-
     turn NULL and
					 reading			     set
     error
	"w"		write		   Create  a  file for	destroy contents
     create new
					 writing
	"a"		append		   Append  to  a  file	  write  to  end
     create new
	"r+"	       read extended	 Open a file for    read from start  re-
     turn NULL and
					 read/write			     set
     error
	"w+"		write  extended     Create  a file for	destroy contents
     create new
					 read/write
	"a+"	       append  extended    Open  a  file  for	  write  to  end
     create new
					 read/write
	File  access mode flag "b" can optionally be specified to open a file in
     binary mode.
	This flag has no effect on POSIX systems, but on Windows,  for	example,
     it disables
	special handling of '\n' and '\x1A'.
	On  the append file access modes, data is written to the end of the file
     regardless
	of the current position of the file position indicator.
	File access mode flag "x" can optionally be  appended  to  "w"	or  "w+"
     specifiers. This
	flag  forces  the  function to fail if the file exists, instead of over-
     writing it.
	(C++17)
	The behavior is undefined if the mode is not one of the  strings  listed
     above. Some
	implementations define additional supported modes (e.g. Windows).

Return value
	stream on success, a null pointer on failure.

Notes
	std::freopen  is the only way to change the narrow/wide orientation of a
     stream once
	it has been established by an I/O operation or by std::fwide.

	Microsoft CRT version of std::freopen does not support any mode  changes
     when
	filename  is  a null pointer and treats this as an error (see documenta-
     tion). A
	possible workaround is the non-standard function _setmode().

Example
	The following code redirects stdout to a file.

     // Run this code

      #include <cstdio>

      int main()
      {
	  std::printf("stdout is printed to console\n");
	  if (std::freopen("redir.txt", "w", stdout))
	  {
	      std::printf("stdout is redirected to a file\n"); // this is  writ-
     ten to redir.txt
	      std::fclose(stdout);
	  }
      }

Output:
      stdout is printed to console

See also
	fopen  opens a file
	       (function)
	fclose closes a file
	       (function)
	C documentation for
	freopen

http://cppreference.com 	   2024.06.10			 std::freopen(3)

home | help