_dupenv_s
, _wdupenv_s
從目前的環境取得值。
重要
這個 API 不能用於在 Windows 執行階段中執行的應用程式。 如需詳細資訊,請參閱 CRT functions not supported in Universal Windows Platform apps (通用 Windows 平台應用程式中不支援的 CRT 函式)。
語法
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
,則會叫用無效的參數處理程式,如參數驗證中所述。 若允許繼續執行,函式會將 errno
設定為 EINVAL
並傳回 EINVAL
。
如果這些函式無法設定足夠的記憶體,則會將 設定 buffer
為 NULL
和 numberOfElements
0,並傳回 ENOMEM
。
備註
_dupenv_s
函式會在環境變數清單中搜尋 varname
。 若找到變數,_dupenv_s
會配置緩衝區,並將變數的值複製到緩衝區中。 會在 buffer
和 numberOfElements
中傳回緩衝區的位址和長度。 因為它會配置緩衝區本身, _dupenv_s
因此提供 更方便的替代方式 getenv_s
, _wgetenv_s
。
注意
呼叫 程式負責藉由呼叫 free
來釋放記憶體。
如果找不到變數,則會buffer
設定為 ,numberOfElements
並將 設定為 NULL
0,且傳回值為 0,因為這種情況不會被視為錯誤狀況。
如果您對緩衝區的大小不感興趣,您可以針對 numberOfElements
傳遞 NULL
。
_dupenv_s
在 Windows 作業系統中不區分大小寫。 _dupenv_s
會使用全域變數 _environ
所指出的環境複本來存取環境。 如需的討論_environ
,_wgetenv_s
請參閱 中的getenv_s
。
buffer
中的值是環境變數之值的複本,對其進行修改不會對環境產生任何影響。 使用、 _wputenv_s
函_putenv_s
式來修改環境變數的值。
_wdupenv_s
是寬字元版本的 _dupenv_s
;_wdupenv_s
的引數是寬字元字串。 _wenviron
全域變數是寬字元版本的 _environ
。 如需詳細資訊_wenviron
,_wgetenv_s
請參閱 中的getenv_s
。
根據預設,此函式的全域狀態會限定於應用程式。 若要變更此行為,請參閱 CRT 中的全域狀態。
一般文字常式對應
TCHAR.H 常式 |
_UNICODE 和 _MBCS 未定義 |
_MBCS 已定義 |
_UNICODE 已定義 |
---|---|---|---|
_tdupenv_s |
_dupenv_s |
_dupenv_s |
_wdupenv_s |
需求
常式 | 必要的標頭 |
---|---|
_dupenv_s |
<stdlib.h> |
_wdupenv_s |
<stdlib.h> 或 <wchar.h> |
如需相容性詳細資訊,請參閱相容性。
範例
// 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)
另請參閱
進程和環境控制
環境常數
_dupenv_s_dbg
, _wdupenv_s_dbg
getenv_s
, _wgetenv_s
_putenv_s
, _wputenv_s