Microsoft KB Archive/43073

{| = INFO: fopen Accepts Filenames with Embedded Spaces =
 * width="100%"|

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 &quot;Run- Time Library Reference&quot; 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 &quot;he llo.dat&quot; (without the quotation marks).

Sample Code
#include 

FILE *fh;

void main(void) {     fh = fopen (&quot;he llo.dat&quot;, &quot;w+&quot;); 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
 * }