Microsoft KB Archive/43073

From BetaArchive Wiki

INFO: fopen() Accepts Filenames with Embedded Spaces

Article ID: Q43073

The information in this article applies to:

  • The C Run-time (CRT) included with: - Microsoft C for MS-DOS, versions 5.1, 6.0, 6.0a, 6.0ax - Microsoft C/C++ for MS-DOS, version 7.0 - Microsoft Visual C++ for Windows, versions 1.0, 1.5 - Microsoft Visual C++ 32-bit Edition, versions 1.0, 2.0, 2.1, 4.0, 5.0

SUMMARY

The Microsoft Run-time library functions fopen() and open() do not screen for invalid filenames. These functions will accept a filename string with an embedded space.

This behavior is expected and occurs with MS-DOS, OS/2 and Windows NT. The CRT functions fopen() and open() are not tasked with validating the filenames passed to them; this is the responsibility of the calling program. For more information, please refer to the online or hard copy "Run- Time Library Reference" provided with the Microsoft products listed above.

Unfortunately, under MS-DOS, the creation of a file whose name contains an embedded space may cause some difficulties. The simplest way to delete such a file is to use wildcard syntax, such as:

   del *.dat

The following sample code creates a file named "he llo.dat" (without the quotation marks).

Sample Code

   #include <stdio.h>

   FILE *fh;

   void main(void)
   {
      fh = fopen ("he llo.dat", "w+");
      fclose(fh);
   }
Keywords          : kbcode kbCRT kbVC 
Version           : MS-DOS:5.1,6.0,6.00a,6.00ax,7.0; WINDOWS:1.0,1.5; WINDOWS  NT:1.0,2.0,2.1,4.0,5.0
Platform          : MS-DOS NT WINDOWS

Last Reviewed: September 4, 1997
© 1999 Microsoft Corporation. All rights reserved. Terms of Use.