如何获得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下没有前缀的版本。