Defined in header <stdlib.h> | ||
---|---|---|
char *getenv( const char *name ); | (1) | |
errno_t getenv_s( size_t *restrict len, char *restrict value, rsize_t valuesz, const char *restrict name ); | (2) | (since C11) |
name
in the host-specified environment list and returns a pointer to the string that is associated with the matched environment variable. The set of environmental variables and methods of altering it are implementation-defined. setenv()
, unsetenv()
, and putenv()
may invalidate the pointer returned by a previous call or modify the string obtained from a previous call.getenv
invokes undefined behavior.value
(unless null) and the number of bytes written is stored in the user-provided location *len
(unless null). If the environment variable is not set in the environment, zero is written to *len
(unless null) and '\0'
is written to value[0]
(unless null). In addition, the following errors are detected at runtime and call the currently installed constraint handler function: name
is a null pointer valuesz
is greater than RSIZE_MAX
value
is a null pointer and valuesz
is not zero getenv_s
is only guaranteed to be available if __STDC_LIB_EXT1__
is defined by the implementation and if the user defines __STDC_WANT_LIB_EXT1__
to the integer constant 1
before including <stdlib.h>
.name | - | null-terminated character string identifying the name of the environmental variable to look for |
len | - | pointer to a user-provided location where getenv_s will store the length of the environment variable |
value | - | pointer to a user-provided character array where getenv_s will store the contents of the environment variable |
valuesz | - | maximum number of characters that getenv_s is allowed to write to dest (size of the buffer) |
*len
(unless len
is a null pointer).On POSIX systems, the environment variables are also accessible through the global variable environ
, declared as extern char **environ;
in <unistd.h>
, and through the optional third argument, envp
, of the main function.
The call to getenv_s
with a null pointer for value
and zero for valuesz
is used to determine the size of the buffer required to hold the entire result.
#include <stdio.h> #include <stdlib.h> int main(void) { const char *name = "PATH"; const char *env_p = getenv(name); if (env_p) printf("%s = %s\n", name, env_p); }
Possible output:
PATH = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
C++ documentation for getenv |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/program/getenv