Windows & Linux(Unix) 获取当前程序运行目录

转自http://my.oschina.net/u/140714/blog/159584

使用C/C++怎么获取当前运行程序的运行根目录:

Linux(Unix):

    函数原型

1 #include <unistd.h>
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) ; 
01 // VC++ 6.0
02 #include <stdio.h>
03 #include <direct.h>
04 #include <stdlib.h>
05  
06  
07 int main( int argc,char *argv[] )
08 {
09  char path[_MAX_PATH];
10  _getcwd(path,_MAX_PATH);
11  printf("当前工作目录:\n%s\n",path);
12  if( ( _chdir("d:\\visual c++") ) == 0 )
13  {
14  printf("修改工作路径成功\n");
15  _getcwd(path,_MAX_PATH);
16  printf("当前工作目录:\n%s\n",path);
17  }
18  else
19  {
20  perror("修改工作路径失败");
21  exit(1);
22  }
23  return 0;
24 }
25  
26  
27 // vs2008
28 #include <direct.h>
29 #include <stdlib.h>
30 #include <stdio.h>
31  
32 int main( void )
33 {
34     char* buffer;
35     // 得到当前的工作路径
36     if( (buffer = _getcwd( NULL, 0 )) == NULL )
37     {
38         perror"_getcwd error" );
39     }
40     else
41     {
42         printf"%s \nLength: %d\n", buffer, strnlen(buffer) );
43         free(buffer);
44     }
45 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值