C Interview Questions and Answers

 

Why cant I open a file by its explicit path?

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



fopen("c:newdirfile.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 function) correctly, they
have to be doubled, so that the first backslash in each pair quotes the second one:



fopen("c:
ewdirfile.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.)

Posted by:Richards