共用方式為


getenv _wgetenv

從目前環境取得值。 更多這些函式的可用安全版本,請參閱 getenv_s _wgetenv_s

重要

這個 API 不能用於 Windows 執行階段執行的應用程式。如需詳細資訊,請參閱 CRT 函式不支援使用 /ZW

char *getenv( 
   const char *varname 
);
wchar_t *_wgetenv( 
   const wchar_t *varname 
);

參數

  • varname
    環境變數名稱。

傳回值

將指標傳回包含 varname的環境表項目。 修改環境變數的值使用傳回的指標,是不安全的。 使用 _putenv 函式來修改環境變數的值。 找不到 varname ,則在環境表格中,則傳回值為 NULL 。

備註

getenv 函式會搜尋環境變數名稱的 varname。 getenv 不區分大小寫的 Windows 作業系統中。 getenv 和 _putenv 使用環境的複本指向由全域變數 _environ 存取環境。 getenv 只能使用在資料結構可供這個執行階段程式庫和不在環境「為處理序」建立的區段由作業系統。 因此,使用 envp 引數傳遞至 主要wmain 的程式可能會擷取不正確的資訊。

如果 varname 是 NULL,這個函式叫用無效的參數處理常式,如 參數驗證中所述。 如果允許繼續執行,函式將 errno 設置為 EINVAL 並回傳 NULL 。

_wgetenv 是 getenv 的寬字元版本,_wgetenv 函式的參數和回傳值是寬字元字串。 _wenviron 全域變數是 _environ寬字元版本。

在 MBCS 程式 (例如,在 SBCS ASCII), _wenviron 最初是 NULL ,因為環境由多位元組字元字串所組成。 然後,在對 _wputenv的呼叫,或在對 _wgetenv 的呼叫,如果 (MBCS) 環境已經存在,對應的寬字元字串建立環境再指向 _wenviron。

同樣在 Unicode (_wmain) 程式, _environ 最初是 NULL ,因為環境由寬字元字串所組成。 然後,在對 _putenv的呼叫,或在對 getenv 的呼叫,則會 (Unicode) 環境已經存在,對應的 MBCS 環境建立然後指向 _environ。

當兩個環境複本 (MBCS 和 Unicode) 時同時存在的程式,這個執行階段系統必須維護兩份複本,造成較慢的執行時間。 例如,在中,當您呼叫 _putenv,呼叫 _wputenv 的方式也會自動執行,因此,這兩個環境字串對應。

警告

在極少的情況下,,當這個 Runtime 系統維護的 Unicode 版本和環境的多位元組版本時,這兩個環境版本可能不正確對應。這是因為,,,雖然任何唯一的多位元組字元字串對應到唯一的 Unicode 字串,從唯一的 Unicode 字串的對應到多位元組字元字串不一定是唯一的。如需詳細資訊,請參閱 _environ, _wenviron

注意事項注意事項

_putenv_getenv 函式家族不是安全執行緒。_getenv 可以傳回字串指標,當 _putenv 修改字串時,會產生隨機失敗。請確定這些函式的呼叫同步。

泛用文字常式對應

TCHAR.H 常式

未定義 _UNICODE & _MBCS

已定義 _MBCS

已定義 _UNICODE

_tgetenv

getenv

getenv

_wgetenv

視需要檢查或變更 TZ 環境變數、使用 getenv, _putenv 和 _tzset 的值。 如需 TZ,請參閱 _tzset_daylight、時區和 _tzname

需求

程序

必要的標頭檔

getenv

<stdlib.h>

_wgetenv

<stdlib.h> 或 <wchar.h>

如需其他相容性資訊,請參閱入門介紹中的 相容性 (Compatibility)

範例

// crt_getenv.c
// compile with: /W3
// This program uses getenv to retrieve
// the LIB environment variable and then uses
// _putenv to change it to a new value.
 
#include <stdlib.h>
#include <stdio.h>

int main( void )
{
   char *libvar;

   // Get the value of the LIB environment variable.
   libvar = getenv( "LIB" ); // C4996
   // Note: getenv is deprecated; consider using getenv_s instead

   if( libvar != NULL )
      printf( "Original LIB variable is: %s\n", libvar );

   // Attempt to change path. Note that this only affects the environment
   // variable of the current process. The command processor's
   // environment is not changed.
   _putenv( "LIB=c:\\mylib;c:\\yourlib" ); // C4996
   // Note: _putenv is deprecated; consider using putenv_s instead

   // Get new value.
   libvar = getenv( "LIB" ); // C4996

   if( libvar != NULL )
      printf( "New LIB variable is: %s\n", libvar );
}
  

.NET Framework 對等用法

System::Environment::GetEnvironmentVariable

請參閱

參考

處理程序和環境控制

_putenv _wputenv

環境的常數