转自http://my.oschina.net/u/140714/blog/159584
使用C/C++怎么获取当前运行程序的运行根目录:
Linux(Unix):
函数原型
2 | char * getcwd( char *buf, size_t size); |
作用:把当前目录的绝对地址保存到 buf 中,buf 的大小为 size。如果 size太小无法保存该地址,返回 NULL 并设置 errno 为 ERANGE。可以采取令 buf 为 NULL并使 size 为负值来使 getcwd 调用 malloc 动态给 buf 分配,但是这种情况要特别注意使用后释放缓冲以防止内存泄漏。
程序例如果在程序运行的过程中,目录被删除(EINVAL错误)或者有关权限发生了变化(EACCESS错误),getcwd也可能会返回NULL。(摘至百度百科:
http://baike.baidu.com/link?url=j5mcCamsR79ZRH0s5RQcKNa7JCgSHWDRyMT_AAjBJQvM1PEU0S9NwEMifpkOFB7W
)
Windows:
函数原型:
char* _getcwd(char* pBuffer, int buffLen) ;
07 | int main( int argc, char *argv[] ) |
10 | _getcwd(path,_MAX_PATH); |
11 | printf ( "当前工作目录:\n%s\n" ,path); |
12 | if ( ( _chdir( "d:\\visual c++" ) ) == 0 ) |
15 | _getcwd(path,_MAX_PATH); |
16 | printf ( "当前工作目录:\n%s\n" ,path); |
36 | if ( (buffer = _getcwd( NULL, 0 )) == NULL ) |
38 | perror ( "_getcwd error" ); |
42 | printf ( "%s \nLength: %d\n" , buffer, strnlen(buffer) ); |