Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

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

NAME
       std::fopen - std::fopen

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

	  Opens	a file indicated by filename and returns a file	stream associ-
       ated with that
	  file.	mode is	used to	determine the file access mode.

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

	 File access flags

	   File	access	      Meaning	      Explanation      Action if  file
       Action if file
	   mode	 string						already	exists
       does not	exist
	  "r"		 read		   Open	a file for    read from	 start
       return 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
       return 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	 exam-
       ple, 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
       overwriting 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
	  If  successful,  returns  a  pointer to the object that controls the
       opened file stream,
	  with both eof	and error bits cleared.	The stream is  fully  buffered
       unless filename
	  refers to an interactive device.

	  On  error,  returns a	null pointer. POSIX requires that errno	is set
       in this case.

Notes
	  The format of	filename is implementation-defined, and	does not  nec-
       essarily	refer to
	  a  file  (e.g.  it  may  be the console or another device accessible
       through filesystem
	  API).	On platforms that support them,	filename may include  absolute
       or relative
	  filesystem path.

	  For  portable	 directory and file naming, see	C++ filesystem library
       or
	  boost.filesystem.

Example
       // Run this code

	#include <cstdio>
	#include <cstdlib>

	int main()
	{
	    int	is_ok =	EXIT_FAILURE;
	    FILE* fp = std::fopen("/tmp/test.txt", "w+");
	    if(!fp) {
		std::perror("File opening failed");
		return is_ok;
	    }

	    int	c; // note: int, not char, required to handle EOF
	    while ((c =	std::fgetc(fp))	!= EOF)	{ // standard C	I/O file read-
       ing loop
	       std::putchar(c);
	    }

	    if (std::ferror(fp)) {
		std::puts("I/O error when reading");
	    } else if (std::feof(fp)) {
		std::puts("End of file reached successfully");
		is_ok =	EXIT_SUCCESS;
	    }

	    std::fclose(fp);
	    return is_ok;
	}

Output:
	End of file reached successfully

See also
	  fclose  closes a file
		  (function)
	  fflush  synchronizes an output stream	with the actual	file
		  (function)
	  freopen open an existing stream with a different name
		  (function)

http://cppreference.com		  2022.07.31			 std::fopen(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::fopen&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help