Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 我可以使用envp设置env()吗?_C_Env_Setenv - Fatal编程技术网

C 我可以使用envp设置env()吗?

C 我可以使用envp设置env()吗?,c,env,setenv,C,Env,Setenv,我正在尝试使用setenv()设置一个新的环境变量 但我注意到setenv()函数仅在使用环境“extern char**environ”时才设置新的环境变量 但是我想使用main()的参数:“char**envp” 下面是我尝试在envp中设置的代码,但您将看到,如果运行该代码,它将不会在envp中设置 但是如果我使用const char**environ,它会工作 有什么想法吗 #include <stdlib.h> #include <stdio.h> int

我正在尝试使用setenv()设置一个新的环境变量

但我注意到setenv()函数仅在使用环境“extern char**environ”时才设置新的环境变量

但是我想使用main()的参数:“char**envp”

下面是我尝试在envp中设置的代码,但您将看到,如果运行该代码,它将不会在envp中设置

但是如果我使用const char**environ,它会工作

有什么想法吗

#include <stdlib.h>
#include <stdio.h>

int     main(int ac, char **av, char **envp)
{
  int   i;

  i = 0;
  setenv("NEW_ENV_VAR", "hello_world", 0);
  while (envp[i])
    printf("%s\n", envp[i++]);
  return (0);
}
#包括
#包括
内部主(内部ac、字符**av、字符**envp)
{
int i;
i=0;
setenv(“新环境变量”,“你好世界”,0);
while(envp[i])
printf(“%s\n”,envp[i++]);
返回(0);
}
()被记录为不允许将可选的
envp
参数更改为main

如果需要遍历所有环境变量,请使用
extern char**environ

另请参见。

因此,如果要使用envp,我必须重新编码setenv(),对吗?否。
envp
main
中的局部变量,外部函数根本无法修改它。使用
外部字符**环境。或者如果您坚持使用
envp
变量,只需编写
envp=environ
main
调用
setenv
之后的某个地方。