_getcwd _wgetcwd
取得目前的工作目錄。
重要
這個 API 不能用於 Windows 執行階段執行的應用程式。如需詳細資訊,請參閱 CRT 函式不支援使用 /ZW。
char *_getcwd(
char *buffer,
int maxlen
);
wchar_t *_wgetcwd(
wchar_t *buffer,
int maxlen
);
參數
buffer
路徑的儲存位置。maxlen
路徑的最大長度 (以字元為單位): _getcwd 的 _wgetcwd的 char 和 wchar_t 。
傳回值
傳回 buffer 的指標。 NULL 傳回值指示錯誤,,且 errno 設為任一對 ENOMEM,表示有配置足夠的記憶體 maxlen 位元組 (當 NULL 引數為 buffer),或者為 ERANGE,表示路徑超過 maxlen 個字元。 如果 maxlen 小於或等於零,這個函式叫用無效的參數處理常式,如 參數驗證中所述。
如需更多關於這些和其他回傳碼的資訊,請參閱 _doserrno 、 errno 、 _sys_errlist 、和 _sys_nerr (_doserrno, errno, _sys_errlist, and _sys_nerr) 。
備註
_getcwd 函式取得目前工作目錄的完整路徑預設磁碟機的並將它儲存在 buffer。 整數引數 maxlen 為路徑的最大長度。 發生錯誤,如果路徑的長度 (包括結束的 null 字元) 超過 maxlen*。*buffer 引數可以是 NULL;至少 maxlen 大小緩衝區只 (如有必要),使用 malloc,自動配置,,儲存路徑。 這個緩衝區可以藉由呼叫 free 並將它傳遞給 _getcwd 傳回值之後釋放 (對配置緩衝區的指標)。
_getcwd 會傳回代表目前工作目錄路徑的字串。 如果目前的工作目錄是根目錄,字串以反斜線 ( \ ) 結束。 除了之外,如果工作目錄是目錄,字串結尾為目錄名稱和不以反斜線。
_wgetcwd 是 _getcwd的寬字元版本; buffer 引數和傳回值 _wgetcwd 是寬字元字串。 _wgetcwd 和 _getcwd 其餘行為相同。
當 _DEBUG 和 _CRTDBG_MAP_ALLOC 定義時,呼叫 _getcwd 和 _wgetcwd 是由 _getcwd_dbg 和 _wgetcwd_dbg 的呼叫取代允許偵錯記憶體配置。 如需詳細資訊,請參閱 _getcwd_dbg, _wgetcwd_dbg。
泛用文字常式對應
Tchar.h 常式 |
未定義的 _UNICODE 和 _MBCS |
已定義 _MBCS |
已定義 _UNICODE |
---|---|---|---|
_tgetcwd |
_getcwd |
_getcwd |
_wgetcwd |
需求
程序 |
必要的標頭檔 |
---|---|
_getcwd |
<direct.h> |
_wgetcwd |
<direct.h> 或 <wchar.h> |
如需更多關於相容性的資訊,請參閱入門介紹中的 相容性 (Compatibility) 。
範例
// 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>
#include <stdlib.h>
#include <stdio.h>
int main( void )
{
char* buffer;
// Get the current working directory:
if( (buffer = _getcwd( NULL, 0 )) == NULL )
perror( "_getcwd error" );
else
{
printf( "%s \nLength: %d\n", buffer, strnlen(buffer) );
free(buffer);
}
}
.NET Framework 對等用法
System::Environment::CurrentDirectory