#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;
}
我想打印一个环境变量的特定值,但是getenv返回null,我不知道为什么。例如,当我说getenv(“USER”)时,它工作正常
2条答案
按热度按时间bprjcwpo1#
对
getenv(envp[0])
的调用返回NULL
,因为您传递的字符串包含键 * 及其值 *。例如,我的系统中的
envp[0]
为不
watbbzwu2#
在手册页中:
getenv()函数搜索环境列表以找到环境变量名,并返回指向相应值字符串的指针。
getenv
搜索变量名,并返回它的值,但是您传递给它的是envp[0]
,它包含变量名和值,因此是NULL
。"SHELL"
是getenv
的有效参数,而SHELL=/bin/bash
不是。