2011-04-06 80 views
2

新手問題:顯示名稱的所有環境變量的C =價值+

我想打印我的過程到標準輸出的每一個環境變量的名稱和值。以下示例顯示每個環境變量的值,但不顯示名稱。我怎樣才能另外打印這個名字?

int main(int argc, char **argv, char** envp) { 
    char** env; 
    for (env = envp; *env != 0; env++) { 
    cout << *env << "\n"; 
    } 
} 
+1

這將取決於您的操作系統和可能的編譯器。 – 2011-04-06 18:21:39

+2

你確定它不打印這個名字嗎?通常(對於我使用的每個編譯器/操作系統組合),它的格式爲 = forsvarir 2011-04-06 18:23:59

+0

同意。例如,我在Ubuntu下用g ++編譯了你的程序,並打印出像LANG = en_US.UTF-8這樣的東西。 – QuantumMechanic 2011-04-06 18:26:15

回答

2

以防萬一這不會關閉,人們在這裏結束。通常情況下,每個值指向* envp是形式的字符串:

<EnvironmentVariableName>=<EnvironmentValue> 

如(從ideone.com拍攝):

TMPDIR=/home/Cat5sW 
PATH=/usr/local/bin:/usr/bin:/bin 
PWD=/home/Cat5sW 
LANG=en_US.UTF-8 
SHLVL=0 
HOME=/home/Cat5sW 

然後,您將需要拆分字符串,基於'='字符。正如John在上面指出的,這對於一些操作系統/編譯器組合可能會有所不同(儘管我從未遇到過它們)。

+1

當疲憊的時候,一些元素可能會淡入淡出(我相信我們都在那裏) – forsvarir 2011-04-06 18:45:48

相關問題