Collapse the table of content
Expand the table of content
Important This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here. ArchiveDisclaimer


Sets the default file translation mode for file I/O operations.

errno_t _set_fmode( 
   int mode 


[in] mode

The file translation mode desired: _O_TEXT or _O_BINARY.

Returns zero if successful, an error code on failure. If mode is not _O_TEXT or _O_BINARY or _O_WTEXT, the invalid parameter handler is invoked, as described in Parameter Validation. If execution is allowed to continue, this function sets errno to EINVAL and returns EINVAL.

The function sets the _fmode global variable. This variable specifies the default file translation mode for the file I/O operations _open and _pipe.

_O_TEXT and _O_BINARY are defined in Fcntl.h. EINVAL is defined in Errno.h.

Routine Required header Optional header Compatibility



<fcntl.h>, <errno.h>

Windows 95, Windows 98, Windows 98 Second Edition, Windows Millennium Edition, Windows NT 4.0, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003

For more compatibility information, see Compatibility in the Introduction.

// crt_set_fmode.c
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>     /* for _O_TEXT and _O_BINARY */
#include <errno.h>     /* for EINVAL */
#include <sys\stat.h>  /* for _S_IWRITE */
#include <share.h>     /* for _SH_DENYNO */

int main()
   int mode, fd, ret;
   errno_t err;
   int buf[12] = { 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
                   75, 76 };
   char * filename = "fmode.out";

   err = _get_fmode(&mode);
   if (err == EINVAL)
      printf( "Invalid parameter: mode\n");
      return 1;
      printf( "Default Mode is %s\n", mode == _O_TEXT ? "text" :

   err = _set_fmode(_O_BINARY);
   if (err == EINVAL)
      printf( "Invalid mode.\n");
      return 1;
   if ( _sopen_s(&fd, filename, _O_RDWR | _O_CREAT, _SH_DENYNO, _S_IWRITE | _S_IREAD) != 0 )
      printf( "Error opening the file %s\n", filename);
      return 1;

   if (ret = _write(fd, buf, 12*sizeof(int)) < 12*sizeof(int))
      printf( "Problem writing to the file %s.\n", filename);
      printf( "Number of bytes written: %d\n", ret);

   if (_close(fd) != 0)
      printf("Error closing the file %s. Error code %d.\n",
             filename, errno);

   system("type fmode.out");

Sample Output

Default Mode is binary
A   B   C   D   E   F   G   H   I   J   K   L   
© 2015 Microsoft