Windows File I/O vs. C Run-time File I/O

Article translations Article translations
Article ID: 11988 - View products that this article applies to.
This article was previously published under Q11988
Expand all | Collapse all

SUMMARY

The following functions are provided by the Microsoft C Run-time Library (CRT) and the Windows API to create a file:
   Return Type    API or Function   Category
   --------------------------------------------
   HFILE          OpenFile          Windows API
   HFILE          _lopen/_lcreat    Windows API
   int            _open/_creat      CRT
   FILE *         fopen             CRT
				
These return types (HFILE, int, and FILE *) are not compatible, so they can not be used in a function which is expecting the other type. The HFILEs are handles to operating system files (MS-DOS file handles), the ints are CRT file handles, and the FILE *s are pointers to structures which represent a CRT stream.

For files opened with OpenFile(), _lopen, and _lcreat, the common file manipuluation routines that you should use are:
_lclose
_llseek
_lread
_lwrite
For files opened with _open() and _creat(), the common file manipulation routines that you should use are:
_close
_lseek
_read
_write
For files opened with fopen, the common file manipulation routines that you should use are:
fclose
fseek
fread
fwrite
For other input and output functions, please check the documentation for information on whether they are intended for use with MS-DOS handles (HFILE), streams (FILE *), or low-level I/O (int).

MORE INFORMATION

An application should use the OpenFile() API any time an MS-DOS file handle is required.

The open functions do not necessarily open a file in binary raw mode; the application is required to set the binary attribute explicitly. The OpenFile() function automatically performs this step.

If the filename parameter specifies only a filename and extension, the open functions search for a matching file only in the current directory.

In Windows, the OpenFile() API creates an MS-DOS file handle through which an application can access Windows-specific files. OpenFile() initially opens the file in binary raw mode by performing an MS-DOS Interrupt 21h Function 3Dh. If the lpFileName parameter specifies only a filename and an extension, OpenFile() searches for a matching file in the following directories:

  • The current directory.
  • The Windows directory. The GetWindowsDirectory() API returns the path to this directory.
  • The Windows system directory . The GetSystemDirectory() API returns the path to this directory.
  • The directories listed in the PATH environment variable.

Properties

Article ID: 11988 - Last Review: October 30, 2003 - Revision: 3.0
APPLIES TO
  • Microsoft Windows Software Development Kit 3.0
  • Microsoft Windows Software Development Kit 3.1
Keywords: 
kb16bitonly KB11988
Retired KB Content Disclaimer
This article was written about products for which Microsoft no longer offers support. Therefore, this article is offered "as is" and will no longer be updated.

Give Feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com