computer_knowledge_notes/Languages/CLang/libraries/stdlib.md

3.1 KiB
Raw Blame History

概述

实用函数

数组排序与字符串转换

/* 宏定义 */
// 当前local里多字节字符的最大长度
#define	MB_CUR_MAX	(__ctype_get_mb_cur_max ())

/* 给数组排序
 * base数组的指针
 * nmemb数组元素数量
 * size数组的大小
 * compar元素比较函数它是数组排序的依据
 */
void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));
void qsort_r(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *, void *), void *arg);

/* 把ASCII字符串转换为浮点数 */
double strtod(const char *nptr, char **endptr);
float strtof(const char *nptr, char **endptr);
long double strtold(const char *nptr, char **endptr);

/*
 * 把<*nptr>指向的字符串转化为一个长整型的值。
 * 参数:base字符串所代表的整型数的基数。
 * 参数endptr当函数返回时若<*nptr>指向的字符串可以完全被翻译成一个数字则此值被设置成NULL;当<*nptr>指向的字符串不能完全被翻译成一个数字,则此值会被设置成指向字符串里不能被翻译的部分;当<*nptr>指向的字符串完全不能被翻译成一个数字,此值会指向整个字符串。
 */
long strtol (const char *__restrict, char **__restrict, int);
unsigned long strtoul (const char *__restrict, char **__restrict, int);
long long strtoll (const char *__restrict, char **__restrict, int);
unsigned long long strtoull (const char *__restrict, char **__restrict, int);

/* 字符串转换到 int 整型 */
int atoi(const char *nptr);
/* 字符串转换到 long 整型 */
long atol(const char *nptr);
/* 字符串转换到 double 符点数 */
double atof(const char *nptr);
long long atoll(const char *nptr);

环境变量

/* 清除环境 */
int clearenv(void);
/* 改变或添加环境变量 */
int putenv(char *string);
/* 获取环境变量的值
 * 返回值环境变量name所对应的值的指针。如没有匹配的则返回NULL。
 */
char *getenv(const char *name);
char *secure_getenv(const char *name);
/* 改变或添加环境变量 */
int setenv(const char *name, const char *value, int overwrite);
/* 删除环境变量 */
int unsetenv(const char *name);

随机数

/* 生成一个伪随机数 */
long int random(void);

/* 为random()函数设置seed因为random()产生的伪随机数取决于seed */
void srandom(unsigned int seed);

/* 初始化状态数组state给random()函数用 */
char *initstate(unsigned int seed, char *state, size_t n);

/* 改变random()函数所使用的状态数组state */
char *setstate(char *state);

分配内存

void *malloc(size_t size);	// 分配大小为size字节的内存返回其指针。注分配到的内存未初始化。
void free(void *ptr);	// 释放ptr指向的内存。注prt必须是malloc()calloc()或realloc()的返回值。
void *calloc(size_t nmemb, size_t size);	// 为数组分配内存nmemb是数组中元素数size是每个元素的大小。注分配到的内存会初始化为0.
void *realloc(void *ptr, size_t size);
void *reallocarray(void *ptr, size_t nmemb, size_t size);