getenv、_wgetenv
stdlib.h:インデックス への移動
ヘッダー ファイル
stdlib.h
カテゴリ
プロセス制御ルーチン
プロトタイプ
char *getenv(const char *name);
wchar_t *_wgetenv(const wchar_t *name);
説明
システム環境から環境変数を取得します。
環境は、名前=文字列\0
という形式の一連のエントリで構成されています。
getenv は、指定された変数の値を返します。 名前には、大文字でも小文字でも指定できます。 名前に等号(=
)を含めることはできません。 指定した環境変数が存在しない場合、getenv は NULL ポインタを返します。
環境変数を変更するには、putenv、_wputenv を使用してください。
メモ:getenv 関数は、環境変数の内容のコピーではなく、環境変数のポインタを返します。 そのため、次の例のように、取得したポインタを使って変数の内容を変更することが可能です。
この方法で環境変数の内容を変更することはお勧めできません。char *p; p = getenv("PROCESSOR_ARCHITECTURE"); puts(p); strcpy(p, "F20"); p = getenv("PROCESSOR_ARCHITECTURE"); // has no effect on p puts(p);出力例:
x86 F20
戻り値
処理が成功すると、名前に関連付けられた値が getenv から返されます。
指定された名前が環境内で定義されていなければ、NULL ポインタが返されます。
例
#include <stdio.h>
#include <stdlib.h>
#include <alloc.h>
#include <string.h>
int main(void)
{
char *path, *ptr;
int i = 0;
/* get the current path environment */
ptr = getenv("PATH");
/* set up new path */
path = (char *) malloc(strlen(ptr)+15);
strcpy(path,"PATH=");
strcat(path,ptr);
strcat(path,";c:\\temp");
/* replace the current path and display current environment */
putenv(path);
while (_environ[i]){
printf("%s\n",_environ[i++]);
}
return 0;
}
移植性
POSIX | Win32 | ANSI C | ANSI C++ | |
---|---|---|---|---|
getenv |
+ |
+ |
+ |
+ |
_wgetenv |
+ |