_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
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應