90 lines
3.1 KiB
Markdown
90 lines
3.1 KiB
Markdown
#### 概述
|
||
|
||
实用函数
|
||
|
||
#### 数组排序与字符串转换
|
||
|
||
```c
|
||
/* 宏定义 */
|
||
// 当前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);
|
||
|
||
```
|
||
|
||
#### 环境变量
|
||
|
||
```c
|
||
/* 清除环境 */
|
||
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);
|
||
```
|
||
|
||
#### 随机数
|
||
|
||
```c
|
||
/* 生成一个伪随机数 */
|
||
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);
|
||
```
|
||
|
||
#### 分配内存
|
||
|
||
```c
|
||
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);
|
||
```
|
||
|