2016-12-15 10 views
0

Я пытаюсь сделать мою программу c более динамичной. Он должен открыть файл с функцией fopen(). По-видимому, fopen не читает абсолютные пути. Например, он не может читать этот путь:Абсолютный путь в fopen()

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

возвращает NULL

, однако,

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

возвращает ожидаемый указатель

I был выигран если есть возможный способ прочесть такой путь, который может быть независим от текущего рабочего каталога в других случаях?

+0

Вы имели в виду сказать Относительный путь? – glant

+4

fopen() может определенно открыть файлы, используя полную спецификацию пути. Возможно, опечатка? – JJF

+1

Это в Windows? – kaylum

ответ

2

fopen() может принимать абсолютные пути в качестве аргументов. Вы работаете над операционной системой на основе unix/linux или на окнах? Вероятно, что происходит, у вас неправильный путь. Если вы на макинтош, что она выглядит, как вы, правильный путь может быть

~/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' - это не тот путь, который вы ищете. Расширение' ~ 'до значения текущего домашнего каталога пользователя обычно выполняется только оболочкой. Кроме того, IIRC,'/a/path/like/this' работает относительно тома текущего рабочего каталога в Windows. –

+0

Я действительно работаю над linux, и, как вы сказали, это была ошибка в пути. Я фактически забыл положить нулевой ограничитель на конец моей строки, вызвавший эту ошибку. Спасибо за ваш ответ –

+0

есть функция, которая может вернуть текущий каталог в строку –