_dupenv_s, _wdupenv_s

获取当前环境的值。

重要

此 API 不能在运行时的窗口执行的应用程序。有关更多信息,请参见 CRT 函数不支持与 /ZW

errno_t _dupenv_s(
   char **buffer,
   size_t *numberOfElements,
   const char *varname
);
errno_t _wdupenv_s(
   wchar_t **buffer,
   size_t *numberOfElements,
   const wchar_t *varname
);

参数

  • buffer
    存储变量值的缓冲区。

  • numberOfElements
    buffer的大小。

  • varname
    环境变量名称。

返回值

在成功的零,在失败时的错误代码。

这些功能验证方法的参数;如果 buffer 或 varname 是 NULL,参数无效处理程序调用如 参数验证所述。 如果执行允许继续,对 EINVAL 的功能集 errno 和返回 EINVAL。

如果这些函数不能分配足够的内存,这些设置 buffer 到 NULL 和 numberOfElements 为 0,并返回 ENOMEM。

备注

_dupenv_s 功能搜索环境变量列表 varname。 如果找到该变量,_dupenv_s 分配缓冲区并复制变量值到缓冲区中。 缓冲区的地址和长度。buffer 和 numberOfElements返回。 通过分配缓冲区,_dupenv_s 提供更简便的替代 getenv_s, _wgetenv_s

备注

为调用的程序负责通过调用 free释放内存。

如果没有找到该变量,则 buffer 设置为 NULL,numberOfElements 设置为 0,因此,返回值为 0,这是因为这种情况视作错误状态。

如果您不需要缓冲区感兴趣的大小可以通过 numberOfElements的 NULL。

_dupenv_s 不区分大小写在 windows 操作系统。 _dupenv_s 使用环境的副本用全局变量指向该 _environ 访问该环境。 有关 _environ的讨论参见。getenv_s, _wgetenv_s 的备注。

在 buffer 的值是环境变量的值的副本;修改它没有对环境的效果。 使用 _putenv_s, _wputenv_s 功能修改环境变量的值。

_wdupenv_s 是 _dupenv_s的宽字符版本;_wdupenv_s 的参数是宽字符字符串。 _wenviron 全局变量是 _environ的宽字符版本。 有关更多 getenv_s, _wgetenv_s 参见中的"备注"在 _wenviron。

一般文本例程映射

TCHAR.H 实例

未定义的_UNICODE & _MBCS

定义的_MBCS

定义的_UNICODE

_tdupenv_s

_dupenv_s

_dupenv_s

_wdupenv_s

要求

实例

必需的标头

_dupenv_s

<stdlib.h>

_wdupenv_s

<stdlib.h> 或 <wchar.h>

有关其他的兼容性信息,请参见中介绍的 兼容性

示例

// crt_dupenv_s.c
#include  <stdlib.h>

int main( void )
{
   char *pValue;
   size_t len;
   errno_t err = _dupenv_s( &pValue, &len, "pathext" );
   if ( err ) return -1;
   printf( "pathext = %s\n", pValue );
   free( pValue );
   err = _dupenv_s( &pValue, &len, "nonexistentvariable" );
   if ( err ) return -1;
   printf( "nonexistentvariable = %s\n", pValue );
   free( pValue ); // It's OK to call free with NULL
}

示例输出

pathext = .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.pl
nonexistentvariable = (null)

.NET Framework 等效项

System::Environment::GetEnvironmentVariable

请参见

参考

处理和环境控件

环境常数

_dupenv_s_dbg, _wdupenv_s_dbg

getenv_s, _wgetenv_s

_putenv_s, _wputenv_s