【问题标题】:List environment variables with C用 C 列出环境变量
【发布时间】:2015-12-16 05:27:06
【问题描述】:

我使用下面的代码打印环境变量。我怀疑主函数中char *argv[]char *envp[]的参数之间是否存在联系。

示例代码:-

#include <stdio.h>    
int main(int argc, char *argv[], char *envp[])    
{
  int index = 0;    
  while (envp[index])    
    printf("%s\n", envp[index++]);    
}

在删除参数 argc 和 argv 后执行程序时出现分段错误。 请哪位大神解释一下!

【问题讨论】:

  • “在删除参数 argc 和 argv 后执行程序时出现分段错误。” - 嗯?如果您遇到代码问题,请发布您遇到问题的代码

标签: c


【解决方案1】:

参数叫什么并不重要;只有他们的立场很重要。

如果你删除了argcargv,那么你只有

int main(char *envp[])

这是非法的(因为第一个参数应该是整数)。

包含argcargv 但不使用它们有什么问题?

另外,我应该指出envp 不可移植。但它被最广泛使用的 C 实现所接受。

【讨论】:

    【解决方案2】:

    main 被称为 int main(int argc, char** argv, char** envp)。

    如果去掉argc、argv,就会是

    int main(char* envp[])

    所以 envp 会被设置为 argc,当 envp[index++] 时会出现分段错误

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-21
      • 1970-01-01
      • 1970-01-01
      • 2012-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多