18.7为什么fopen("c:\newdir\file.dat", "r")返回错误?
问题:为什么用了详尽的路径还不能打开文件? fopen("c:\ newdir\file.dat", "r") 返回错误。
你实际请求的文件名内含有字符nn 和nf, 可能并不存在, 也不是你希望的。
在字符常量和字符串中, 反斜杠n 是逃逸字符, 它赋予后面紧跟的字符特殊意义。为了正确的把反斜杠传递给fopen() (或其它函数), 必须成双的使用, 这样第一个反斜杠引述了第二个:
fopen("c:\\newdir\\file.dat", "r")
另一个选择, 在MS-DOS 下, 正斜杠也被接受为路径分隔符, 所以也可以这样用:
fopen("c:/newdir/file.dat", "r")
注意, 顺便提一下, 用于预处理#include 指令的头文件名不是字符串文字, 所以不必担心反斜杠的问题。
你实际请求的文件名内含有字符nn 和nf, 可能并不存在, 也不是你希望的。
在字符常量和字符串中, 反斜杠n 是逃逸字符, 它赋予后面紧跟的字符特殊意义。为了正确的把反斜杠传递给fopen() (或其它函数), 必须成双的使用, 这样第一个反斜杠引述了第二个:
fopen("c:\\newdir\\file.dat", "r")
另一个选择, 在MS-DOS 下, 正斜杠也被接受为路径分隔符, 所以也可以这样用:
fopen("c:/newdir/file.dat", "r")
注意, 顺便提一下, 用于预处理#include 指令的头文件名不是字符串文字, 所以不必担心反斜杠的问题。