_dupenv_s _wdupenv_s
從目前環境取得值。
重要
這個 API 不能用於 Windows 執行階段執行的應用程式。如需詳細資訊,請參閱 CRT 函式不支援使用 /ZW。
errno_t _dupenv_s(
char **buffer,
size_t *numberOfElements,
const char *varname
);
errno_t _wdupenv_s(
wchar_t **buffer,
size_t *numberOfElements,
const wchar_t *varname
);
參數
buffer
將變數值的緩衝區。numberOfElements
buffer的大小。varname
環境變數名稱。
傳回值
零值會在成功,失敗則為錯誤碼。
這些函式會驗證它們的參數;如果 buffer 或 varname 是 NULL,無效的參數處理常式叫用如 參數驗證中所述。 如果執行允許繼續, EINVAL 和 EINVAL傳回的函式所設定的 errno 。
如果這些函式無法配置足夠的記憶體,所以請將 buffer 設定為 NULL 和 numberOfElements 為 0 並傳回 ENOMEM。
備註
_dupenv_s 函式會搜尋環境變數名稱的 varname。 如果找到變數, _dupenv_s 配置緩衝區複製到變數值輸入緩衝區。 緩衝區的位址和長度在 buffer 和 numberOfElements傳回。 傳遞配置緩衝區, _dupenv_s 提供更方便的替代 getenv_s _wgetenv_s。
注意事項 |
---|
為呼叫端的責任藉由呼叫 free來釋放記憶體。 |
如果變數是找不到 buffer ,則設定為 NULL, numberOfElements 會設為 0,因此,傳回值是 0,因為這種情況不會視為錯誤條件。
如果您不想緩衝區感興趣的大小可以傳遞 numberOfElements的 NULL 。
_dupenv_s 不區分大小寫的 Windows 作業系統中。 _dupenv_s 使用環境的複本指向由全域變數 _environ 存取環境。 如需 _environ的詳細資訊請參閱 getenv_s _wgetenv_s 中的 <備註>。
在 buffer 的值為環境變數值的複本;修改對環境沒有作用。 使用 _putenv_s _wputenv_s 函式來修改環境變數的值。
_wdupenv_s 是 _dupenv_s的寬字元版本; _wdupenv_s 引數是寬字元字串。 _wenviron 全域變數是 _environ寬字元版本。 為多個參閱 getenv_s _wgetenv_s 中的 < 在 _wenviron。
泛用文字常式對應
TCHAR.H 常式 |
未定義 _UNICODE & _MBCS |
已定義 _MBCS |
已定義 _UNICODE |
---|---|---|---|
_tdupenv_s |
_dupenv_s |
_dupenv_s |
_wdupenv_s |
需求
程序 |
必要的標頭檔 |
---|---|
_dupenv_s |
<stdlib.h> |
_wdupenv_s |
<stdlib.h> 或 <wchar.h> |
如需其他相容性資訊,請參閱入門介紹中的 相容性 (Compatibility) 。
範例
// crt_dupenv_s.c
#include <stdlib.h>
int main( void )
{
char *pValue;
size_t len;
errno_t err = _dupenv_s( &pValue, &len, "pathext" );
if ( err ) return -1;
printf( "pathext = %s\n", pValue );
free( pValue );
err = _dupenv_s( &pValue, &len, "nonexistentvariable" );
if ( err ) return -1;
printf( "nonexistentvariable = %s\n", pValue );
free( pValue ); // It's OK to call free with NULL
}
範例輸出
pathext = .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.pl
nonexistentvariable = (null)
.NET Framework 對等用法
System::Environment::GetEnvironmentVariable