#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char **argv, char **envp) {
for (int i = 0; envp[i] != NULL; i ) {
printf("%d.%s\n", i , envp[i]);
}
char *aux;
if (getenv(envp[0]) != NULL) {
aux = getenv(envp[0]);
} else {
printf("NULL\n");
}
return 0;
}
I want to print a specific value of an enviorment variable but getenv returns null and i dont know why.When i say getenv("USER") for example it works fine
CodePudding user response:
The call to getenv(envp[0]) returns NULL because you are passing a string that contains the key and its value. Just pass the key.
For example, envp[0] in my system is
ALLUSERSPROFILE=C:\ProgramData
not
ALLUSERSPROFILE
CodePudding user response:
From the man page:
The getenv() function searches the environment list to find the environment variable name, and returns a pointer to the corresponding value string.
"Re: isnt the value: /bin/bash?"
You answered your own question.
getenv searches for a variable name, and returns it's value. But you passed it envp[0], which contains both the name and it's value, hence the NULL.
"SHELL" is a valid argument to getenv, while SHELL=/bin/bash is not.
