2017-10-13 78 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

相關問題