2017-10-13 96 views
-3

如果我用以下任何一种方式打开C文件,那么fopen可以正常工作。如果斜杠'/'放在目录名称之前,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上。这是什么原因?我应该删除开始斜杠'/'?

+10

你理解路径的概念吗?特别是*绝对*路径和*相对*路径之间的区别? –

+0

在shell中测试你正在使用的“ls”或“dir”的路径,你很快就会看到你的错误在哪里 –

+0

file.txt == file.txt int当前目录。 /file.txt ==系统根目录下的file.txt。他们显然不一样。 – PSkocik

回答

0

您需要添加“。”在“/”

前的盈:fopen("./dir/file.txt", "w");

,如果你开始“/”它会从根目录开始。这就是fopens返回null的原因

+3

不要这样做。当前文件夹可以是任何东西,假定它指向应用程序的目录是一个常见的错误。 –

+0

是否有任何理由使用'。/ dir'而不仅仅是'dir'? –

+0

@AndrejsCainikovs我刚刚回答了用户如何从当前文件夹转到该文件(在子文件夹中)。 – Ran94

相关问题