Я делаю программу на C, где мне нужно получить каталог, из которого запускается программа. Эта программа написана для компьютеров UNIX. Я смотрел opendir()
и telldir()
, но telldir()
возвращает off_t (long int)
, так что это действительно не помогает мне.
Как я могу получить текущий путь в строке (массив символов)?
c
unix
working-directory
CharlesB
источник
источник
int main()
должно бытьint main(void)
.char cwd[PATH_MAX+1]
. Или, если вы не можете быть обеспокоены буферами толькоchar *buf=getcwd(NULL,0);
и когда вы закончитеfree(buf)
(по состоянию на POSIX.1-2001)Посмотрите справочную страницу для
getcwd
.источник
man 3 getcwd
. Помимо шуток, не будьте анархонистами, этот пост написан в '08, так что соглашения были другими.Хотя вопрос помечен Unix, люди также посещают его, когда их целевой платформой является Windows, а ответом для Windows является
GetCurrentDirectory()
функция:Эти ответы относятся как к C, так и к C ++ коду.
Ссылка, предложенная пользователем 4581301 в комментарии к другому вопросу и подтвержденная в качестве текущей наиболее популярной, с помощью поиска Google 'site: microsoft.com getcurrentdirectory'.
источник
источник
Обратите внимание, что
getcwd(3)
он также доступен в libc: getcwd (3) от Microsoft и работает так же, как вы ожидаете.Необходимо связать с
-loldnames
(oldnames.lib, что в большинстве случаев делается автоматически) или использовать_getcwd()
. Версия без префикса недоступна в Windows RT.источник
Чтобы получить текущий каталог (в котором вы выполняете целевую программу), вы можете использовать следующий пример кода, который работает как для Visual Studio, так и для Linux / MacOS (gcc / clang), как для C, так и для C ++:
источник