当前位置: C语言 -- 附录 -- getenv_s

getenv_s函数


概要:
#define __STDC_WANT_LIB_EXT1__ 1
#include <stdlib.h>
errno_t getenv_s(size_t * restrict len,
      char * restrict value, rsize_t maxsize,
      const char * restrict name);

描述:

该函数在宿主环境提供的环境列表中搜索与参数name指向字符串相匹配的字符串。

如果发现匹配字符串,getenv_s函数将执行以下操作:如果参数len不是空指针,与匹配的列表成员关联的字符串的长度将存储到参数len指向的整数中。如果关联字符串的长度小于参数maxsize,关联字符串将复制到参数value指向的数组。

如果未发现匹配字符串,getenv_s函数将执行以下操作:如果参数len不是空指针,0将存储到参数len指向的整数中。如果参数maxsize大于0value[0]将被设置为空字符。

环境名称集和更改环境列表的方法由实现定义。该函数不需要避免与修改环境列表的其它执行线程的数据竞争。许多实现会提供修改环境列表的非标准函数。


运行约束:

参数name不能是空指针。参数maxsize应不大于宏RSIZE_MAX。如果参数maxsize不等于0,参数value不能是空指针。

如果存在运行约束冲突,参数len指向的对象将设置为0(前提是参数len不是空指针。),并且不搜索环境列表。


参数:
size_t * restrict len

size_t类型指针,指向对象存储环境变量字符串的长度。

char * restrict value

char类型指针,指向存储环境变量字符串的数组。

rsize_t maxsize

参数value指向数组的最小数组长度。

const char * restrict name

char类型指针,指向要搜索的字符串。


返回值:

如果找到参数name指定的字符串并且成功存入参数value指向的数组,函数返回0;否则函数返回一个非0值。


范例:
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
/*安全函数getenv_s范例*/

#define __STDC_WANT_LIB_EXT1__ 1
#include <stdio.h>
#include <stdlib.h>

#define LENGTH 100

int main(void)
{
    /*获取计算机名。*/
    const char *str = "COMPUTERNAME";
    char computerName[LENGTH];
    size_t len;
    
    if(!getenv_s(&len, computerName, LENGTH, str))
        puts(computerName);

    return 0;
}


输出:

GCH-PC

注:使用Visual Studio编译。


相关内容:
getenv 搜索环境列表中匹配字符串的函数。