在我的程序中,我正在尝试打开一个文件,例如C:\unescaped\backslashes.txt
,但无法打开!为什么呢?
这是一个常见的Q& A的集合。这也是一个社区维基,所以每个人都被邀请参与维护。
网站上有很多问题归结为OP不知道他/她需要在源代码中的文件路径中转义反斜杠。问题通常是“为什么我的程序不起作用?”或“为什么找不到文件?”,源代码中的某个地方会有:
const char *fileName = "C:\unescaped\backslashes.txt";
此问题适用于C,C ++,Java,Python和其他编译器将反斜杠视为转义字符的语言。
Meta帖子供参考 - Proposal for exact-duplicate sink for all the "double-backslashes in filename" questions
答案 0 :(得分:4)
这是初步答案。它是社区维基,所以随时可以改进它。
在代码中的某处,您有一个包含未转义反斜杠的文件路径。例如:
const char *fileName = "c:\unescaped\backslashes.txt";
您需要将其更改为:
const char *fileName = "c:\\unescaped\\backslashes.txt";
C,C ++,Java,Python和其他语言的编译器将反斜杠视为一个特殊字符,称为the escape character。
例如,\n
将变为换行符。因此,此代码 - printf("C:\new file.txt");
将打印
C: ew file.txt
因此,如果您的文件名包含反斜杠,程序将收到的内容将不会是您在源代码中看到的内容。反斜杠本身可以使用另一个反斜杠进行转义。所以这段代码 - printf("C:\\new file.txt");
将打印出来:
C:\new file.txt