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

strerror_s函数


概要:
#define __STDC_WANT_LIB_EXT1__ 1
#include <string.h>
errno_t strerror_s(char *s, rsize_t maxsize,
      errno_t errnum);

描述:

该函数将参数errnum值映射到特定语言环境的信息字符串。参数errnum值通常来自宏errno,但strerror_s函数应将int类型的任意值映射到信息字符串。

如果信息字符串的长度小于参数maxsize,信息字符串将复制到参数s指向的数组。

如果参数maxsize大于0maxsize-1个字符将从信息字符串复制到参数s指向的数组,并将s[maxsize-1]设置为空字符。如果参数maxsize大于3s[maxsize-2]s[maxsize-3]s[maxsize-4]将被设置为字符'.'。


运行约束:

参数s不能是空指针。参数maxsize应不大于宏RSIZE_MAX,且不等于0

如果存在运行约束冲突,函数不会修改参数s指向的数组。


参数:
char *s

指向数组的指针,信息字符串将存入该数组。

rsize_t maxsize

参数s指向数组中可修改的最大字节数。

errno_t errnum

错误编号。


返回值:

如果信息字符串的长度小于参数maxsize并且不存在运行约束冲突,函数返回0;否则函数返回非0值。


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

#define __STDC_WANT_LIB_EXT1__ 1
#include <errno.h>
#include <math.h>
#include <stdio.h>
#include <string.h>

#define LENGTH 100

int main(void)
{
    double a;
    char str[LENGTH];
    errno = 0;

    a = sqrt(-1.0);
    if(!strerror_s(str, LENGTH, errno))
        puts(str);
    
    return 0;
}


输出:

Domain error

注:使用Visual Studio编译。


相关内容:
strerror 获取出错信息的函数。