### Question 19.17

Why can't I open a file by its explicit path? The call

    fopen("c:\newdir\file.dat", "r")

is failing.

The file you actually requested--with the characters `\n` and `\f` in its name--probably doesn't exist, and isn't what you thought you were trying to open.

In character constants and string literals, the backslash `\` is an escape character, giving special meaning to the character following it. In order for literal backslashes in a pathname to be passed through to `fopen` (or any other routine) correctly, they have to be doubled, so that the first backslash in each pair quotes the second one:

    	fopen("c:\\newdir\\file.dat", "r");

Alternatively, under MS-DOS, it turns out that forward slashes are also accepted as directory separators, so you could use

    	fopen("c:/newdir/file.dat", "r");

(Note, by the way, that header file names mentioned in preprocessor `#include` directives are not string literals, so you may not have to worry about backslashes there.)

Read sequentially: prev next up top

This page by Steve Summit // Copyright 1995 // mail feedback