Печать всего значения среды в C - PullRequest
0 голосов
/ 03 декабря 2018

Итак, я получаю все переменные среды:

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.

Я знаю, что *Можно использовать 1008 *, но я не знаю, как его использовать в for.

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Что-то вроде:

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

Возможно?

Обратите внимание, что это предполагает, что в вашей системе нет пустых переменных среды.

0 голосов
/ 03 декабря 2018

Печать значения проста - просто найдите первый экземпляр = и увеличьте указатель на единицу:

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

Теперь, если вам нужнополучить имя переменной в виде строки с нулевым символом в конце, что более сложно - потому что вам, возможно, не следует изменять переменные окружения на месте, поэтому вам придется скопировать имя в другой массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...