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