C 如果斜杠'/';放在目录';姓名

C 如果斜杠'/';放在目录';姓名,c,linux,windows,fopen,C,Linux,Windows,Fopen,如果我用以下任何一种方式在C中打开一个文件,那么fopen工作正常 fopen("file.txt", "w"); fopen("/file.txt", "w"); fopen("dir/file.txt", "w"); 如果我将斜杠“/”(对于Windows,则为“\”)放在目录名之前,如下所示,则fopen失败(返回NULL) 它发生在Windows(MSVC)和Linux上。原因是什么?我是否应该删除起始斜杠“/”?您需要在“/”前面添加“.” 例如:fopen(“./dir/file.

如果我用以下任何一种方式在C中打开一个文件,那么
fopen
工作正常

fopen("file.txt", "w");
fopen("/file.txt", "w");
fopen("dir/file.txt", "w");
如果我将斜杠“/”(对于Windows,则为“\”)放在目录名之前,如下所示,则
fopen
失败(返回NULL)

它发生在Windows(MSVC)和Linux上。原因是什么?我是否应该删除起始斜杠“/”?

您需要在“/”前面添加“.”

例如:
fopen(“./dir/file.txt”,“w”)


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

您理解路径的概念吗?特别是绝对路径和相对路径之间的差异?在shell中测试您试图使用“ls”或“dir”的路径,您很快就会看到错误在当前目录中的位置是file.txt==file.txt/file.txt==系统根目录中的file.txt。他们显然不一样。@Someprogrammerdude awww。。。。我在发布了这个问题并在Linux上的一个简单C文件中进行了尝试后意识到了这一点。我最初只是从Windows的角度考虑这个问题。为什么它在Windows上失败了呢?我猜路径字符串中的
\
字符被C编译器解释为转义。要获得文本
\
,您可能需要
\\
不要这样做。当前文件夹可以是任何东西,假设它将指向应用程序的目录是一个常见的错误。是否有任何理由使用
/dir
而不仅仅是
dir
?@AndrejsCainikovs我刚才回答了用户如何从当前文件夹转到该文件(在子文件夹中)。@Ran94谢谢!我也是在阅读了上面的评论(并在问题上获得了-1票,这似乎很不公平。不是吗?)。知道是什么根路径导致了Windows上的错误吗?
fopen("/dir/file.txt", "w");