C标准对C中的main函数作了如下说明:
程序启动时调用的函数名为main。这个实现没有声明函数原型。它应该必须使用int的返回类型定义,并且不带参数:
int main(void) { /* ... */ }
或带有两个参数(这里称为argc和argv):
int main(int argc, char *argv[]) { /* ... */ }
或其他方式。
但是大多数编译器还支持main的第三个声明,该声明接受第三个参数。第三个参数存储所有环境变量。
#include <stdio.h>
// Most of the C compilers support a third parameter to main which
// store all envorinment variables
int main(int argc, char *argv[], char * envp[])
{
int i;
for (i = 0; envp[i] != NULL; i++)
printf("\n%s", envp[i]);
getchar();
return 0;
}
输出:
ALLUSERSPROFILE=C:\ProgramData
CommonProgramFiles=C:\Program Files\Common Files
HOMEDRIVE=C:
NUMBER_OF_PROCESSORS=2
OS=Windows_NT
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 6 Model 42 Stepping 7, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=2a07
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
PUBLIC=C:\Users\Public
SESSIONNAME=Console
SystemDrive=C:
SystemRoot=C:\Windows
WATCOM=C:\watcom
windir=C:\Windows
另一种打印环境变量的方法是使用全局变量environ:
/* showenv.c - shows how to read and print the environment
*/
#include <stdio.h>
extern char **environ; /* points to the array of strings */
int main(void)
{
int i;
for(i = 0; environ[i]; i++ )
printf("%s\n", environ[i]);
}
参考文档
[1]GeeksforGeeks.C Program to print environment variables[EB/OL].https://www.geeksforgeeks.org/c-program-print-environment-variables/,2017-05-20.