【发布时间】:2017-10-13 10:01:43
【问题描述】:
如果我以以下任何一种方式在 C 中打开文件,则 fopen 可以正常工作。
fopen("file.txt", "w");
fopen("/file.txt", "w");
fopen("dir/file.txt", "w");
如果我在目录名称前添加一个斜杠“/”(在 Windows 的情况下为“\”),则 fopen 失败(返回 NULL)。
fopen("/dir/file.txt", "w");
它发生在 Windows (MSVC) 和 Linux 上。它的原因是什么?我应该删除斜杠“/”吗?
【问题讨论】:
-
你了解路径的概念吗?尤其是绝对路径和相对路径的区别?
-
在 shell 中使用“ls”或“dir”测试你尝试使用的路径,你很快就会发现你的错误在哪里
-
file.txt == file.txt int 当前目录。 /file.txt == 系统根目录中的 file.txt。它们显然不一样。
-
@Someprogrammerdude awww .... 在发布问题并在 Linux 上的简单 C 文件中尝试后,我意识到了这一点。我最初只是从 Windows 的角度考虑它。为什么它在 Windows 上失败了?
-
我猜你的路径字符串中的
\字符被 C 编译器解释为转义。要获得文字\,您可能需要\\