首页 > 解决方案 > 在 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

标签: cenvironment-variables

解决方案


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

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

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


推荐阅读