程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 創建和訪問環境變量

創建和訪問環境變量

編輯:關於C++

環境變量的構成

環境變量由一對字符串組成,格式為:變量=關聯值。例如:

PATH=C:\WINDOWS

在DOS和WINDOWS中,你可以從命令行或在批處理文件中定義環境變量,方法是使用SET命令,後面跟賦值表達式。下面是一個創建環境變量的例子,

SET VERSION=1.1.3

在Unix中可以省略前面的SET,寫為:

VERSION=1.1.3

讀取環境變量

程序只有在啟動時才能訪問到環境變量,環境變量由一個字符串數組構成,其形式為“VAR=value”。可以用getenv()和putenv()函數從程序中訪問環境變量。

ANSI C 的函數getenv()提供了輕松簡便的訪問環境變量的方法,這個函數在<stdlib.h>中聲明,原型如下:

char * getenv(const char * name);

如果函數調用成功,它返回環境變量的字符串值。如果變量沒有被定義,函數返回空(NULL)。例如:

#include <stdlib.h>
#include <stdio.h>
int main()
{
char * descr = getenv("PATH");
if (descr)
 printf("value of PATH is: %s", descr);
else
 printf("variable not defined");
}

設置環境變量

為了定義環境變量或者改變現存的變量值,使用putenv()函數。這個函數不是由標准的ANSI/ISO定義的。在實際應用中,Unix和Windows都將這個函數作為非標准擴展定義在<stdlib.h>文件中,它是可移植的。其原型如下:

int putenv(const char * var);

參數var必須是字符串,而且格式必須是“VAR=VAL”。putenv()將變量VAR添加到當前的環境變量中,並賦值VAL。如果變量已存在, putenv()覆蓋現存的值。如果你不想覆蓋現存變量的值,就先調用getenv()來檢查變量是否存在,然後再調用putenv()。下面的例子是添加一個名為TEMP的環境變量,賦值為C:\TEMP(注意反斜槓在C/C++字符串中的表示方法)。如果調用成功,putenv()返回0,否則返回-1。

int stat = putenv("TEMP=C:\\TEMP");
if (!stat)
{
printf("環境變量定義失敗");
}

支持寬字符集變量

Win32中也能定義getenv()和putenv()的寬字符集版本。注意_wputenv()使用於NT和Win2000:

wchar_t * _wgetenv(const wchar_t * name);

int _wputenv(const wchar_t * var);

環境變量的使用

環境變量的作用就是你不用改變源文件,不用重編譯便可以控制程序的行為。例如,你可以通過定義環境變量控制程序是否顯示debug信息。,如果你需要在客戶處進行debug輸出,環境變量就特別有用,以下就是一個這方面的例子,如果定義了環境變量DBG:

void func();
#include <stdlib.h>
#include <stdio.h>
int main()
{
bool debug=false;
if (getenv("DBG"))
 debug=true;
if (debug)
 printf("calling func");
func();
if (debug)
 printf("returned from func");
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved