繁体   English   中英

在C中打印所有环境值

[英]Printing all environment value in C

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

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中的所有环境变量 (仅值)。

我知道getenv可以使用,但我不知道如何使用它for

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

#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);
        }
    }
}

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

就像是:

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

也许?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM