2016-12-15 576 views
0

我想讓我的c程序更具動態性。它應該用fopen()打開一個文件。顯然,fopen不會讀取絕對路徑。例如它不能讀取這個路徑:fopen中的絕對路徑()

fopen("/Documents/projects/cs50_radio/broadcast/source/deadinside.mp3", "r") 

返回NULL

;然而,

fopen("deadinside.mp3", "r"); 

返回預期的指針

我贏了在有其他情況下,是否有可能讀取可能與當前工作目錄無關的路徑?

+0

你是不是故意說相對路徑? – glant

+4

fopen()絕對可以使用完整路徑規範打開文件。可能是一個錯字? – JJF

+1

這是在Windows上嗎? – kaylum

回答

2

fopen()可以將絕對路徑作爲參數。你在使用基於Unix/Linux的操作系統還是在Windows上工作?可能發生的事情是你有錯誤的路徑。如果你是在Mac上,它看起來像你的,正確的路徑可能是

~/Documents/projects/cs50_radio/broadcast/source/deadinside.mp3 

但是你可以cd'ing進入該目錄,然後輸入pwd

如果你在驗證窗口,你的路徑肯定是錯誤的,因爲窗戶看起來更像這樣:

C:\Documents\projects\cs50_radio\broadcast\source\deadinside.mp3 
+2

'〜/ whatever/you/have/here'不是你要找的路徑,'〜'擴展到當前用戶主目錄的值通常只能由shell完成,另外,IIRC,''/a/path/like/this'與Windows中當前工作目錄的卷相對應。 – 2016-12-15 23:57:49

+0

我實際上在linux上工作,正如你所說的那樣,這是一個錯誤,我實際上忘記了在我的字符串結尾導致了這個錯誤。謝謝你的回覆 –

+0

有一個函數可以返回當前目錄中的一個字符串 –