C Library User 手册(20)

281 篇文章 15 订阅

C Library User 手册(20)

10.17 <stdlib.h>

包括标准头文件 <stdlib.h> 以声明各种有用的函数并定义帮助你使用它们的宏和类型。
在这里插入图片描述
在这里插入图片描述

10.17.1 a64l

long a64l(const char *s); [POSIX]
a64l 和 l64a 函数在长整数和它的 base-64 ASCII 字符串表示之间进行转换。

用于表示“数字”的字符是

表 10-5 字符到数字的表示

CharacterDigit
.0
/1
0-92-11
A-Z12-37
a-z38-63

a64l 接受一个指向以 null 结尾的 base-64 ASCII 字符串表示形式 s 的指针,并返回相应的长整数值。 成功完成后,a64l 返回与输入字符串对应的长整数值。 如果s指向的字符串是空字符串,a64l返回值0L。

10.17.2 abort

void abort(void);
该函数调用 raise(SIGABRT),它报告中止信号 SIGABRT。 中止信号的默认处理是导致程序异常终止并向目标环境报告终止不成功。 目标环境是否刷新输出流、关闭打开的文件或在异常终止时删除临时文件是实现定义的。 如果你指定了导致 raise 将控制返回中止的处理,则该函数调用 exit (EXIT_FAILURE),以使用 EXIT_FAILURE 报告不成功的终止。 abort 永远不会将控制权返回给它的调用者。

10.17.3 abs

int abs(int i);
long abs(long i); [C++ only]

该函数返回 i 的绝对值,|i|。 接受长参数的版本的行为与实验室相同。

10.17.4 atexit

extern "C++"
    int atexit(void (*func)(void)); [C++ only]  
extern "C" [C++ only]
    int atexit(void (*func)(void));

该函数注册地址为 func 的函数以通过 exit(或 main 返回时)调用,如果成功则返回零。 这些函数以注册表的相反顺序调用。 你可以注册至少 32 个功能。

此外,在 C++ 中,如果控件因为未能处理抛出的异常而离开被调用函数,则调用 terminate。

10.17.5 atof

double atof(const char *s);
该函数将字符串 s 的初始字符转换为 double 类型的等效值 x,然后返回 x。 转换与 strtod(s, 0) 的转换相同,只是如果发生转换错误,则不一定将值存储在 errno 中。

10.17.6 atoi

int atoi(const char *s);
该函数将字符串 s 的初始字符转换为 int 类型的等效值 x,然后返回 x。 转换与 (int)strtol(s, 0, 10) 的转换相同,只是如果发生转换错误,则值不一定存储在 errno 中。

10.17.7 atol

long atol(const char *s);
该函数将字符串 s 的初始字符转换为 long 类型的等效值 x,然后返回 x。 转换与 strtol(s, 0, 10) 的转换相同,只是如果发生转换错误,则不一定将值存储在 errno 中。

10.17.8 bsearch

extern "extern "C++"
    void *bsearch(const void *key, const void *base,
        size_t nelem, size_t size,
            int (*cmp)(const void *ck,
                const void *ce)); [C++ only]
extern "C" [C++ only]
    void *bsearch(const void *key, const void *base,
        size_t nelem, size_t size,
            int (*cmp)(const void *ck,
                const void *ce));ce));

该函数搜索一个有序值数组,并返回一个数组元素的地址,该地址等于搜索键 key(如果存在); 否则,它返回一个空指针。 该数组由 nelem 元素组成,每个元素都是 size 字节,从地址为基数的元素开始。

bsearch 调用地址为 iscmp 的比较函数将搜索关键字与数组元素进行比较。 比较函数必须返回:

  • 如果搜索关键字ck 小于数组元素ce,则为负值
  • 如果两者相等则为零
  • 如果搜索关键字大于数组元素,则为正值

bsearch 假定数组元素按照比较函数使用的相同比较规则按非降序排列。

10.17.9 calloc

void *calloc(size_t nelem, size_t size);
该函数分配一个数组对象,其中包含每个大小为大小的 nelem 元素,在数组的所有字节中存储零,如果成功则返回数组第一个元素的地址; 否则,它返回一个空指针。 您可以安全地将返回值转换为字节大小不大于 size 的任何类型的对象指针。

10.17.10 div

div_t div(int numer, int denom);
ldiv_t div(long numer, long denom); [C++ only]

该函数将 numer 除以 denom 并在结构结果 x 中返回商和余数(如果商可以表示)。 结构成员 x.quot 是向零截断的代数商。 结构 memberx.rem 是余数,因此 numer == x.quot*denom + x.rem。

10.17.11 div_t

typedef struct {
    int quot, rem;
} div_t;

type 是函数 div 返回的结构体类型。 该结构包含表示带有 int 类型操作数的有符号整数除法的商 (quot) 和余数 (rem) 的成员。 上面显示的成员可以按任意顺序出现。

10.17.12 drand48

double drand48(void); [POSIX]
rand48 系列函数使用处理 48 位整数的线性同余算法生成伪随机数。 使用的特定公式是 r(n+1) = (a * r(n) + c) mod m 其中默认值为被乘数 a = 0x5deece66d = 25214903917 和加数 c = 0xb = 11。模数始终固定为 m = 2 48 。 r(n) 称为随机数生成器的种子。

第一个计算步骤是执行算法的单次迭代。

drand48 返回 double 类型的值。 将 r(n+1) 的全部 48 位加载到返回值的尾数中,并设置指数以使生成的值位于区间 [0.0, 1.0) 中。

drand48 使用内部缓冲区来存储 r(n)。 对于这些函数,r(0) 的初始值 = 0x1234abcd330e = 20017429951246。

10.17.13 ecvt

char *ecvt(double value, int ndigit, int *decpt, int *sign);[POSIX]
这个函数在 Posix 标准中被标记为遗留,并且只为了向后兼容而存在。 改为使用 strtod。

10.17.14 erand48

double erand48(unsigned short xseed[3]); [POSIX]
rand48 系列函数使用处理 48 位整数的线性同余算法生成伪随机数。 使用的特定公式是 r(n+1) = (a * r(n) + c) mod m 其中默认值为被乘数 a = 0x5deece66d = 25214903917 和加数 c = 0xb = 11。模数始终固定为 m = 2 48 。 r(n) 称为随机数生成器的种子。

第一个计算步骤是执行算法的单次迭代。

erand48 返回 double 类型的值。 将 r(n+1) 的全部 48 位加载到返回值的尾数中,并设置指数以使生成的值位于区间 [0.0, 1.0) 中。

erand48 使用用户提供的缓冲区来存储种子 r(n),它由 3 个短路数组组成,其中第 0 个成员保存最低有效位。

10.17.15 exit

void exit(int status);
该函数调用 atexit 注册的所有函数,关闭所有文件,并将控制权返回给目标环境。 如果状态为零或 EXIT_SUCCESS,则程序报告成功终止。 如果状态为 EXIT_FAILURE,则程序报告未成功终止。 实现可以为状态定义附加值。

10.17.16 EXIT_FAILURE

#define EXIT_FAILURE
宏产生状态参数的值以退出报告不成功的终止。

10.17.17 EXIT_SUCCESS

#define EXIT_SUCCESS
宏产生状态参数的值以退出报告成功终止。

10.17.18 fcvt

char *fcvt(double value, int ndigit, int *decpt, int *sign);[POSIX]
这个函数在 Posix 标准中被标记为遗留,并且只为了向后兼容而存在。 改为使用 strtod。

10.17.19 free

void free(void *ptr);
如果 ptr 不是空指针,则函数释放地址为 ptr 的对象; 否则,它什么也不做。 您只能通过调用 calloc、malloc 或 realloc 释放您首先分配的对象。

10.17.20 gcvt

char *gcvt(double value, int ndigit, char *buf); [POSIX]
这个函数在 Posix 标准中被标记为遗留,并且只为了向后兼容而存在。 改为使用 strtod。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值