getcwd

1函數簡介編輯

函數名稱:_getcwd(在TC2.0下爲getcwd)
getcwd

getcwd

函數原型:char *_getcwd( char *buffer, int maxlen );
功 能:獲取當前工作目錄
參數說明:_getcwd()會將當前工作目錄的絕對路徑複製到參數buffer所指的內存空間中,參數maxlen爲buffer的空間大小。
返 回 值:成功則返回當前工作目錄,失敗返回 FALSE
在某些 Unix 的變種下,如果任何父目錄沒有設定可讀或搜索模式,即使當前目錄設定了,getcwd()還是會返回 FALSE。有關模式與權限的更多信息見 chmod()。
頭文件:direct.h(TC2.0下爲dir.h)

2UNIX 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。

TC2.0的範例

#include <stdio.h>
#include <dir.h>
//頭文件有可能不是dir.h,在vc6.0定義在#include <direct.h>的頭文件,在qt4.5下是unistd.h,VS2008下是direct.h,應該依編程者的環境而定
int main(void)
{
char buffer[MAXPATH];
getcwd(buffer, MAXPATH);
printf("The current directory is: %s\n", buffer);
return 0;
}

VC++6.0的範例

#include <stdio.h>
#include <dirent.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>
getcwd

getcwd

#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);
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章