C uses the putenv and getenv functions to access environment variables.
# Include <stdlib. h>
Char * getenv (const char * Name );
Int putenv (const char * string );
The environment is composed of strings in the format of "name = value.
The getenv function searches for a string in the environment with a given name and returns the value related to the name. If the request does not exist, null is returned.
Because the string returned by getenv is stored in the static space, you must copy it if you want to use it further.
// 1 The first few lines after the declaration of main ensure that the program, environ.c, has been called correctly.#include <stdlib.h>#include <stdio.h>#include <string.h>int main(int argc, char *argv[]){ char *var, *value; if(argc == 1 || argc > 3) { fprintf(stderr,"usage: environ var [value]\n"); exit(1); }// 2 That done, we fetch the value of the variable from the environment, using getenv. var = argv[1]; value = getenv(var); if(value) printf("Variable %s has value %s\n", var, value); else printf("Variable %s has no value\n", var);// 3 Next, we check whether the program was called with a second argument. If it was, we set the variable to the value of that argument by constructing a string of the form name=value and then calling putenv. if(argc == 3) { char *string; value = argv[2]; string = malloc(strlen(var)+strlen(value)+2); if(!string) { fprintf(stderr,"out of memory\n"); exit(1); } strcpy(string,var); strcat(string,"="); strcat(string,value); printf("Calling putenv with: %s\n",string); if(putenv(string) != 0) { fprintf(stderr,"putenv failed\n"); free(string); exit(1); }// 4 Finally, we discover the new value of the variable by calling getenv once again. value = getenv(var); if(value) printf("New value of %s is %s\n", var, value); else printf("New value of %s is null??\n", var); } exit(0);}
./Environ home
Variable home has value/home/ZQ
./Environ QQ
Varliable QQ has no value
./Environ ZQ QQ
Varliable ZQ has no value
Calling putenv with: ZQ = QQ
New Value of ZQ is QQ
./Environ ZQ
Varliable ZQ has no value