2012-01-11 50 views
3

當我提供相對路徑時,用fopen()打開的文件失敗。我正在Visual Studio 2010的Windows計算機上運行此代碼。用相對路徑打開的文件失敗

const char* OUTPUT_FILE = "output/PERFORMANCE.txt"; 
FILE* f = fopen(OUTPUT_FILE, "w"); 

這種指定相對路徑的方式不正確嗎?我應該使用「\」分隔符嗎?

指定使用相同格式的絕對路徑工作正常。 (例如「C:/output/PERFORMANCE.txt」)

+0

它應該工作。問題是相對於什麼?你的工作目錄是什麼? – Mysticial 2012-01-11 02:22:29

+2

'.exe'運行的目錄可能不是您期望的目錄。那麼你的相對路徑是錯誤的。 – 2012-01-11 02:53:41

+0

當我將OUTPUT_FILE指定爲「PERFORMANCE.txt」時,將在與.exe相同的目錄中創建新文件。所以我猜工作目錄和.exe目錄是一樣的。 – arjunurs 2012-01-11 15:54:20

回答

0

output子目錄是否存在?打開文件進行寫入將創建文件,如果它不存在,但不是它的路徑。 。

+0

是的,輸出目錄存在 – arjunurs 2012-01-11 15:51:46

2

檢查您目前在哪個目錄使用Windows至少有兩種方式:

  1. _getcwd
  2. GetCurrentDirectory

確保你是在你認爲你所在的目錄,並確保該目錄中存在目錄output,否則您需要創建它。在Windows中,至少有兩種方式:

  1. _mkdir
  2. CreateDirectory

文件將無法打開(甚至寫),如果任何中間目錄不存在。如果您沒有對目標目錄的權限,該文件也可能無法打開。