Подтвердить что ты не робот

Печать всех переменных среды в C/С++

Как получить список всех переменных среды на C и/или С++?

Я знаю, что getenv можно использовать для чтения переменной среды, но как мне их перечислить?

4b9b3361

Ответ 1

Переменные окружения становятся доступными main() как аргумент envp - массив строк с нулевым завершением:

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

Ответ 2

#include<stdio.h>

extern char **environ;

int main() {
  int i = 1;
  char *s = *environ;

  for (; s; i++) {
    printf("%s\n", s);
    s = *(environ+i);
  }

  return 0;
}

Ответ 3

Я думаю, вы должны проверить environ. Используйте "man environ".

Ответ 4

Ваш компилятор может предоставить нестандартные расширения основной функции, которая предоставляет дополнительную информацию о переменных среды. MS-компилятор и большинство разновидностей Unix имеют эту версию main:

int main (int argc, char **argv, char **envp)

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

Ответ 5

int main(int argc, char **argv, char** env) {
   while (*env)
      printf("%s\n", *env++);
   return 0;
}

Ответ 6

int main(int argc, char* argv[], char* envp[]) {
   // loop through envp to get all environments as "NAME=val" until you hit NULL.
}

Ответ 7

В большинстве сред вы можете объявить свой основной как:

main(int argc,char* argv[], char** envp)

envp содержит все строки окружения.

Ответ 9

Если вы работаете в операционной системе Windows, вы также можете вызвать GetEnvironmentStrings(), который возвращает блок строк с нулевым завершением.