Windows & Linux(Unix) 獲取當前程序運行目錄

使用C/C++怎麼獲取當前運行程序的運行根目錄:

Linux(Unix):
c++

    函數原型 函數

#include <unistd.h>
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) ;
// VC++ 6.0
#include <stdio.h>
#include <direct.h>
#include <stdlib.h>


int main( int argc,char *argv[] )
{
 char path[_MAX_PATH];
 _getcwd(path,_MAX_PATH);
 printf("當前工做目錄:\n%s\n",path);
 if( ( _chdir("d:\\visual c++") ) == 0 )
 {
 printf("修改工做路徑成功\n");
 _getcwd(path,_MAX_PATH);
 printf("當前工做目錄:\n%s\n",path);
 }
 else
 {
 perror("修改工做路徑失敗");
 exit(1);
 }
 return 0;
}


// vs2008
#include <direct.h>
#include <stdlib.h>
#include <stdio.h>

int main( void )
{
	char* buffer;
	// 獲得當前的工做路徑
	if( (buffer = _getcwd( NULL, 0 )) == NULL )
	{
		perror( "_getcwd error" );
	}
	else
	{
		printf( "%s \nLength: %d\n", buffer, strnlen(buffer) );
		free(buffer);
	}
}
相關文章
相關標籤/搜索