如何获得C程序中的当前目录?
我正在做一个C程序,我需要从程序启动的目录。 该程序是为UNIX计算机编写的。 我一直在看opendir()
和telldir()
,但是telldir()
返回一个off_t (long int)
,所以它真的帮不了我。
我怎样才能得到一个string(字符数组)的当前path?
你看看getcwd()
吗?
#include <unistd.h> char *getcwd(char *buf, size_t size);
简单的例子:
#include <unistd.h> #include <stdio.h> #include <errno.h> int main() { char cwd[1024]; if (getcwd(cwd, sizeof(cwd)) != NULL) fprintf(stdout, "Current working dir: %s\n", cwd); else perror("getcwd() error"); return 0; }
查找getcwd
的手册页。
虽然这个问题被标记为Unix,但是当目标平台是Windows时,人们也可以访问它,Windows的答案是GetCurrentDirectory()
函数:
DWORD WINAPI GetCurrentDirectory( _In_ DWORD nBufferLength, _Out_ LPTSTR lpBuffer );
这些答案适用于C和C ++代码。
由user4581301在另一个问题的评论中build议的链接,并通过Googlesearch“site:microsoft.com getcurrentdirectory”作为当前的首选。
请注意, getcwd(3)
在Microsoft的libc: getcwd(3)中也是可用的,其工作方式与您期望的相同。
必须链接-loldnames
(oldnames.lib,大多数情况下会自动完成),或者使用_getcwd()
。 Windows RT下没有前缀的版本。