如何以跨平台的方式在C中获取环境变量

时间:2014-02-04 16:09:37

标签: c++ c cross-platform environment-variables

我在OSX和Windows Vista中使用以下代码:

#include <stdio.h>
#include <string.h>

extern char **environ;

int
main(int argc, char **argv)
{
    int i;
    for (i = 0; environ[i] != NULL; i++)
    {
        printf("var = %s - %d\n", environ[i], (int)strlen(environ[i]));
    }

    return 0;
}

在OSX上使用cc在Windows上编译 - 使用Windows SDK 7.1中的“cl”(包含Redistributable Packages:Microsoft Visual C ++ 2010)。

我用俄语在OS中定义相同的ENV变量:MY_ENV ='俄文字母在这里'。并且在一个字符串的长度上有两倍的差异。

这个长度我打算在malloc中使用并希望它们是相同的。如何以CRT方式正确获得相同的长度?

1 个答案:

答案 0 :(得分:5)

  • getenv可用于GNU / Linux,Mac OS X和Microsoft Windows。
  • setenv适用于GNU / Linux和Mac OS X,但不适用于Microsoft Windows。
  • putenvgetenv一样,可在GNU / Linux,Mac OS X和Microsoft Windows上使用。

因此,getenvputenv是您最佳的跨平台选择。