157 c unix working-directory
我正在制作一个C程序,我需要从中获取程序启动的目录.该程序是为UNIX计算机编写的.我一直在寻找opendir()和telldir(),但telldir()返回off_t (long int),所以它确实没有帮助我.
如何在字符串(char数组)中获取当前路径?
Mic*_*Mic 282
你看过了getcwd()吗?
#include <unistd.h>
char *getcwd(char *buf, size_t size);
Run Code Online (Sandbox Code Playgroud)
简单的例子:
#include <unistd.h>
#include <stdio.h>
#include <limits.h>
int main() {
char cwd[PATH_MAX];
if (getcwd(cwd, sizeof(cwd)) != NULL) {
printf("Current working dir: %s\n", cwd);
} else {
perror("getcwd() error");
return 1;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
CAd*_*ker 58
查找手册页getcwd.
Jon*_*ler 19
虽然问题是标记为Unix,但是当他们的目标平台是Windows时,人们也可以访问它,而Windows的答案就是GetCurrentDirectory()功能:
DWORD WINAPI GetCurrentDirectory(
_In_ DWORD nBufferLength,
_Out_ LPTSTR lpBuffer
);
Run Code Online (Sandbox Code Playgroud)
这些答案适用于C和C++代码.
用户4581301在对另一个问题的评论中建议的链接,并通过Google搜索"site:microsoft.com getcurrentdirectory"验证为当前的首选.
#include <stdio.h> /* defines FILENAME_MAX */
//#define WINDOWS /* uncomment this line to use it for windows.*/
#ifdef WINDOWS
#include <direct.h>
#define GetCurrentDir _getcwd
#else
#include <unistd.h>
#define GetCurrentDir getcwd
#endif
int main(){
char buff[FILENAME_MAX];
GetCurrentDir( buff, FILENAME_MAX );
printf("Current working dir: %s\n", buff);
return 1;
}
Run Code Online (Sandbox Code Playgroud)