如何在C程序中使用环境变量

1mrurvl1  于 2022-12-11  发布在  其他
关注(0)|答案(5)|浏览(156)

我需要知道一种在C语言中使用环境变量的方法。我如何使用和读取它们?
例如,读取环境变量或获取环境变量的值并将其加载到另一个变量中。

osh3o9ms

osh3o9ms1#

您可以使用以下功能-
char * getenv (const char *name)-返回一个字符串,该字符串是环境变量名称的值。
char * secure_getenv (const char *name)
请在http://www.example.com阅读更多函数www.gnu.org/software/libc/manual/html_node/Environment-Access.html#Environment-Access

7hiiyaii

7hiiyaii2#

使用stdlib.h中的getenv函数。就是这样!

#include <stdio.h>
#include <stdlib.h>

int main()
{
    printf("test\n");

    const char* s = getenv("PATH");

    // If the environment variable doesn't exist, it returns NULL
    printf("PATH :%s\n", (s != NULL) ? s : "getenv returned NULL");

    printf("end test\n");
}
jq6vz3qz

jq6vz3qz3#

getenv

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    char* my_env_var = getenv("MY_ENV_VAR");

    if(my_env_var)
        printf("Var found: %s", my_env_var );
    else
        printf("Var not found.");                

    return 0;
}
oknwwptz

oknwwptz4#

在Windows上,您可以使用GetEnvironmentVariable

#include <stdio.h>
#include <winbase.h>
int main(int argc, char *argv[])
{
    TCHAR buff[100] = T("");
    DWORD resultLengthInCharacters = GetEnvironmentVariable(T("USERDOMAIN"), buff, 100);

    if (resultLengthInCharacters > 0 && resultLengthInCharacters < 100) {
        _tprintf(T("USERDOMAIN: %s\n"), buff);
    } else if ( resultLengthInCharacters > 100) {
        _tprintf(T("USERDOMAIN too long to store in buffer of length 100, try again with buffer length %lu\n"), resultLengthInCharacters);
    } else {
        // Error handling incomplete, should use GetLastError(),
        // but typically:
        _tprintf(T("USERDOMAIN is empty or not set in the Environment\n"));
    }
    return 0;
}

但是如果你试图获得一个标准的路径变量,你应该使用SHGetFolderPath函数和正确的CSIDL变量(就像从这个问题:(How do I get the application data path in Windows using C++?

brjng4g3

brjng4g35#

另一种方法是使用全局变量environ

#include <stdio.h>

extern char** environ;
void main(int argc, char* argv[])
{
    int i=0;
    while(environ[i]!=NULL){
        printf("%s\n",environ[i++]);
    }
}

相关问题