【问题标题】:Printing all environment value in C在 C 中打印所有环境值
【发布时间】:2018-12-03 19:15:37
【问题描述】:

所以我得到了所有的环境变量:

int main(int argc, char **argv, char **envp)
{
  for (char **env = envp; *env != 0; env++)
  {
    char *thisEnv = *env;
    printf("%s\n", thisEnv);
  }
  return 0;
}

如何在 C 中获取所有环境变量 value(仅值)。

我知道getenv可以用,但是不知道for怎么用。

【问题讨论】:

    标签: c environment-variables


    【解决方案1】:

    类似:

    for (char **env = envp; *env != 0; env++)
    {
        char *thisEnv = *env;
        printf("%s\n", strchr(thisEnv, '=')+1);
    }
    

    也许?

    请注意,这假设您的系统上没有空的环境变量。

    【讨论】:

      【解决方案2】:

      仅打印 很简单 - 只需找到 = 的第一个实例,并将指针加一即可:

      #include <stdio.h>
      #include <string.h>
      
      int main(int argc, char **argv, char **envp)
      {
          for (char **env = envp; *env != 0; env++)
          {
              char *pair = *env;
              char *value = strchr(pair, '=');
              if (value != NULL) {
                  printf("%s\n", value + 1);
              }
          }
      }
      

      现在,如果您需要将 变量名 作为一个以 null 结尾的字符串,那就更棘手了 - 因为您可能不应该就地修改环境变量,所以您应该将名称复制到另一个数组。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-02-16
        • 1970-01-01
        • 2022-06-13
        • 1970-01-01
        • 2018-10-13
        • 2015-10-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多