Microsoft KB Archive/43073

From BetaArchive Wiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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.