Как открыть файл C с относительным путем? - PullRequest
2 голосов
/ 22 сентября 2010

Я пытаюсь проанализировать текстовый файл и хочу сослаться на него относительно моего текущего местоположения каталога. Если я положу путь к файлу полностью, он будет работать, но я пытаюсь использовать .. \ src \ test.txt не найдет его. Разве это не правильный способ ссылки файла относительно одного каталога?

Любая помощь будет оценена

Ответы [ 4 ]

11 голосов
/ 22 сентября 2010

Если вы поместите «.. \ src \ test.txt» в строковую константу, вам нужно удвоить все обратные слеши, чтобы «\ t» и «\ s» не интерпретировались как escape-последовательности. (Или вместо этого вы можете использовать косую черту, которая более переносима.)

3 голосов
/ 22 сентября 2010

Это будет зависеть от того, какой текущий рабочий каталог установлен.По умолчанию это каталог, в котором находится исполняемый файл, если дважды щелкнуть приложение в Проводнике, или текущий путь, в котором находится оболочка, если он запущен из командной строки.

Если test.txt находится в c: \ code \ app \ src, а ваше приложение - в c: \ code \ app, относительный путь ".. \ src \ test.txt" будет заканчиватьсяc: \ code \ src \ test.txt (если запущен из проводника).

Попробуйте распечатать вывод _getcwd , прежде чем открывать файл, чтобы проверить, какой каталог является текущим рабочим каталогом.

1 голос
/ 22 сентября 2010

Предполагая, что ваша структура каталогов выглядит следующим образом:

project
 +---src
 |       test.txt
 |       proj.c
 \---bin
         a.out  <- Working directory  

ваш относительный путь правильный;Ваш рабочий каталог фактически находится на том же уровне, что и текстовый файл.

Если вы действительно имеете в виду, что файл находится в одном каталоге, как вы указали, например, так: (Примечание: это неуклюжая структура проекта)смысл)

project
|   test.txt
+---src
|       proj.c
\---bin
        a.out  

Тогда вам понадобится путь "../test.txt" или, что эквивалентно, "../../project/test.txt"

Лучшее местоположение будет в каталоге данных, поэтому ваш путь будет "../data/test.txt"

0 голосов
/ 22 сентября 2010

Я предполагаю, что это Windows VS vbuild (с учетом обратного косого пути)

VS поместит двоичный файл в нечто вроде проекта \ bin \ debug. И когда вы запустите его в VS, он установит текущий WD в местоположение двоичного файла.

так

а) скопировать файл в нужное место

b) изменить настройки отладки свойств проекта, указав, что текущий путь к месту, где вы ожидаете, что файл будет (относительно)

...