2016-12-15 647 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

有一个函数可以返回当前目录中的一个字符串 –