共用方式為


_dupenv_s、_wdupenv_s

從目前的環境取得值。

重要

這個 API 不能用於在 Windows 執行階段中執行的應用程式。如需詳細資訊,請參閱 /ZW 不支援 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 更方便的選擇。

注意事項注意事項

其會呼叫程式的責任藉由呼叫 釋放 釋放記憶體。

若找不到變數,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。 如需 _wenviron 的詳細資訊,請參閱 getenv_s、_wgetenv_s 中的「備註」。

一般文字常式對應

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)

.NET Framework 對等用法

System::Environment::GetEnvironmentVariable

請參閱

參考

流程控制和環境控制

環境常數

_dupenv_s_dbg、_wdupenv_s_dbg

getenv_s、_wgetenv_s

_putenv_s、_wputenv_s