Previous: Accessing Command-line Parameters, Up: The main Function [Contents][Index]
You can optionally include a third parameter to main, another
array of strings, to capture the environment variables available to
the program. Unlike what happens with argv, there is no
additional parameter for the count of environment variables; rather,
the array of environment variables concludes with a null pointer.
#include <stdio.h> /* Declares printf. */
int
main (int argc, char *argv[], char *envp[])
{
/* Print out all environment variables. */
int i = 0;
while (envp[i])
{
printf ("%s\n", envp[i]);
i++;
}
}
Another method of retrieving environment variables is to use the
library function getenv, which is defined in stdlib.h.
Using getenv does not require defining main to accept the
envp pointer. For example, here is a program that fetches and prints
the user’s home directory (if defined):
#include <stdlib.h> /* Declaresgetenv. */ #include <stdio.h> /* Declaresprintf. */ int main (void) { char *home_directory = getenv ("HOME"); if (home_directory) printf ("My home directory is: %s\n", home_directory); else printf ("My home directory is not defined!\n"); }