_getcwd
, _wgetcwd
取得目前工作目錄。
語法
char *_getcwd(
char *buffer,
int maxlen
);
wchar_t *_wgetcwd(
wchar_t *buffer,
int maxlen
);
參數
buffer
路徑的儲存位置。
maxlen
路徑的最大長度 (以字元為單位):char
的 _getcwd
,以及 wchar_t
的 _wgetcwd
。
傳回值
傳回 buffer
的指標。 傳NULL
回值表示錯誤,並將 ENOMEM
errno
設定為 ,表示記憶體不足而無法配置maxlen
位元組(當NULL
自變數指定為 buffer
時),或設定為 ERANGE
,表示路徑長度超過maxlen
字元。 如果 maxlen
小於或等於零,此函式會叫用無效的參數處理程式,如參數驗證中所述。
如需這些傳回碼和其他傳回碼的詳細資訊,請參閱errno
、 _sys_errlist
_doserrno
和 _sys_nerr
。
備註
_getcwd
函式會取得預設磁碟機之目前工作目錄的完整路徑,並將其儲存在 buffer
。 整數引數 maxlen
指定該路徑的最大長度。 如果路徑長度 (包括結束的 null 字元) 超過 maxlen
。 buffer
引數可以是 NULL
;系統會使用 maxlen
自動配置大小至少為 malloc
的緩衝區 (並只在必要時才增加) 來儲存路徑。 這個緩衝區稍後可以藉由呼叫 free
,並對其傳遞 _getcwd
傳回值 (已配置緩衝區的指標) 來釋放。
_getcwd
會傳回代表目前工作目錄路徑的字串。 如果目前的工作目錄是根目錄,字串會以反斜杠結尾(\
)。 如果目前的工作目錄是根目錄以外的目錄,字串會以目錄名稱結尾,而不是反斜線。
_wgetcwd
是 _getcwd
的寬字元版本, buffer
引數與 _wgetcwd
的傳回值是寬字元字串。 否則,_wgetcwd
和 _getcwd
的行為即會相同。
定義 和 _CRTDBG_MAP_ALLOC
時_DEBUG
,呼叫 和 _wgetcwd
會由 和_wgetcwd_dbg
的呼叫_getcwd
_getcwd_dbg
取代,讓您偵錯記憶體配置。 如需詳細資訊,請參閱 _getcwd_dbg
和 _wgetcwd_dbg
。
根據預設,此函式的全域狀態會限定於應用程式。 若要變更此行為,請參閱 CRT 中的全域狀態。
一般文字常式對應
Tchar.h 常式 |
_UNICODE 和 _MBCS 未定義 |
_MBCS 已定義 |
_UNICODE 已定義 |
---|---|---|---|
_tgetcwd |
_getcwd |
_getcwd |
_wgetcwd |
需求
常式 | 必要的標頭 |
---|---|
_getcwd |
<direct.h> |
_wgetcwd |
<direct.h> 或 <wchar.h> |
如需相容性詳細資訊,請參閱相容性。
範例
// crt_getcwd.c
// Compile with: cl /W4 crt_getcwd.c
// This program places the name of the current directory in the
// buffer array, then displays the name of the current directory
// on the screen. Passing NULL as the buffer forces getcwd to allocate
// memory for the path, which allows the code to support file paths
// longer than _MAX_PATH, which are supported by NTFS.
#include <direct.h> // _getcwd
#include <stdlib.h> // free, perror
#include <stdio.h> // printf
#include <string.h> // strlen
int main( void )
{
char* buffer;
// Get the current working directory:
if ( (buffer = _getcwd( NULL, 0 )) == NULL )
perror( "_getcwd error" );
else
{
printf( "%s \nLength: %zu\n", buffer, strlen(buffer) );
free(buffer);
}
}
C:\Code