在C / C ++中打印所有的环境variables

如何获得C和/或C ++中所有环境variables的列表?

我知道getenv可以用来读取一个环境variables,但是我如何列出它们呢?

环境variables作为envp参数提供给main() – 一个以空string结尾的数组:

 int main(int argc, char **argv, char **envp) { for (char **env = envp; *env != 0; env++) { char *thisEnv = *env; printf("%s\n", thisEnv); } return 0; } 
 #include<stdio.h> extern char **environ; int main() { int i = 1; char *s = *environ; for (; s; i++) { printf("%s\n", s); s = *(environ+i); } return 0; } 

我想你应该检查一下environ 。 使用“man environ”。

您的编译器可能会提供非标准扩展到提供额外环境variables信息的主函数。 MS编译器和大多数Unix版本都有这个版本的main:

 int main (int argc, char **argv, char **envp) 

其中第三个参数是环境variables信息 – 使用debugging器来查看格式是什么 – 可能是一个空终止的string指针列表。

 int main(int argc, char **argv, char** env) { while (*env) printf("%s\n", *env++); return 0; } 
 int main(int argc, char* argv[], char* envp[]) { // loop through envp to get all environments as "NAME=val" until you hit NULL. } 

在大多数环境中,你可以声明你的main:

 main(int argc,char* argv[], char** envp) 

envp包含所有的环境string。

LPTCH WINAPI GetEnvironmentStrings(void);

http://msdn.microsoft.com/en-us/library/ms683187%28VS.85%29.aspx

编辑:只适用于Windows。

如果你正在Windows操作系统上运行,那么你也可以调用GetEnvironmentStrings()方法返回一个以空字符结尾的string。