libc 基础类库
sstdlib
#include <sstdlib.h>
simple_strtoul
函数原型:
unsigned long simple_strtoul(const char *cp, char **endp, unsigned int base);
参数:
- cp:输入字符串
- endp:一个指向字符指针的指针,用于存储转换后剩余的字符串部分的地址。如果传入NULL,则表示不需要获取剩余的字符串部分。
- base:基数,用于指定转换时使用的进制。可以是0或2~36之间的任意整数。当base为0时,会根据字符串的前缀自动判断进制(0x或0开头表示16进制,0开头表示8进制,其他情况表示10进制)。
返回值:
- 将字符串转换后得到的数值。如果转换成功,则返回转换后的数值;如果转换失败(例如,字符串不包含有效的数字部分),则返回0。请注意,0也可能是转换成功的结果之一,因此在使用返回值时需要进行判断。
simple_strtoull
函数原型:
unsigned long long simple_strtoull(const char *cp, char **endp, unsigned int base);
参数:
cp
:输入字符串endp
:一个指向字符指针的指针,用于存储转换后剩余的字符串部分的地址。如果传入NULL,则表示不需要获取剩余的字符串部分。base
:基数,用于指定转换时使用的进制。可以是0或2~36之间的 任意整数。当base为0时,会根据字符串的前缀自动判断进制(0x或0开头表示16进制,0开头表示8进制,其他情况表示10进制)。
返回值:
- 将字符串转换后得到的数值。如果转换成功,则返回转换后的数值;如果转换失败(例如,字符串不包含有效的数字部分),则返回0。请注意,0也可能是转换成功的结果之一,因此在使用返回值时需要进行判断。
simple_hextoul
函数原型:
unsigned long simple_hextoul(const char *cp, char **endp);
参数:
cp
:输入字符串endp
:一个指向字符指针的指针,用于存储转换后剩余的字符串部分的地址。如果传入NULL,则表示不需要获取剩余的字符串部分。
返回值:
- 将字符串转换后得到的数值。如果转换成功,则返回转换后的数值;如果转换失败(例如,字符串不包含有效的数字部分),则返回0。请注意,0也可能是转换成功的结果之一,因此在使用返回值时需要进行判断。
simple_dectoul
函数原型:
unsigned long simple_dectoul(const char *cp, char **endp);
参数:
cp
:输入字符串endp
:一个指向字符指针的指针,用于存储转换后剩余的字符串部分的地址。如果传入NULL,则表示不需要获取剩余的字符串部分。
返回值:
- 将字符串转换后得到的数值。如果转换成功,则返回转换后 的数值;如果转换失败(例如,字符串不包含有效的数字部分),则返回0。请注意,0也可能是转换成功的结果之一,因此在使用返回值时需要进行判断。
simple_strtol
函数原型:
long simple_strtol(const char *cp, char **endp, unsigned int base);
参数:
cp
:输入字符串endp
:一个指向字符指针的指针,用于存储转换后剩余的字符串部分的地址。如果传入NULL,则表示不需要获取剩余的字符串部分。base
:基数,用于指定转换时使用的进制。可以是0或2~36之间的任意整数。当base为0时,会根据字符串的前缀自动判断进制(0x或0开头表示16进制,0开头表示8进制,其他情况表示10进制)。
返回值:
- 将字符串转换后得到的数值。如果转换成功,则返回转换后的数值;如果转换失败(例如,字符串不包含有效的数字部分),则返回0。请注意,0也可能是转换成功的结果之一,因此在使用返回值时需要进行判断。
simple_ustrtoul
函数原型:
unsigned long simple_ustrtoul(const char *cp, char **endp, unsigned int base);
参数:
cp
:输入字符串endp
:一个指向字符指针的指针,用于存储转换后剩余的字符串部分的地址。如果传入NULL,则表示不需要获取剩余的字符串部分。base
:基数,用于指定转换时使用的进制。可以是0或2~36之间的任意整数。当base为0时,会根据字符串的前缀自动判断进制(0x或0开头表示16进制,0开头表示8进制,其他情况表示10进制)。
返回值:
- 将字符串转换后得到的数值。如果转换成功,则返回转换后的数值;如果转换失败(例如,字符串不包含有效的数字部分),则返回0。请注意,0也可能是转换成功的结果之一,因此在使用返回值时需要进行判断。
simple_ustrtoull
unsigned long long simple_ustrtoull(const char *cp, char **endp, unsigned int base);
- 描述:将输入的无符号字符串转换为无符号长长整型数。
- 参数:
cp
:输入字符串。endp
:一个指向字符指针的指针,用于存储转换后剩余的字符串部分的地址。如果传入NULL,则表示不需要获取剩余的字符串部分。base
:用于指定转换时使用的进制。 可以是0或2~36之间的任意整数。当base为0时,会根据字符串的前缀自动判断进制(0x或0开头表示16进制,0开头表示8进制,其他情况表示10进制)。
- 返回值:转换后的无符号长长整型数。
simple_strtoll
long long simple_strtoll(const char *cp, char **endp, unsigned int base);
- 描述:将输入的字符串转换为长长整型数。
- 参数:
cp
:输入字符串。endp
:一个指向字符指针的指针,用于存储转换后剩余的字符串部分的地址。如果传入NULL,则表示不需要获取剩余的字符串部分。base
:用于指定转换时使用的进制。可以是0或2~36之间的任意整数。当base为0时,会根据字符串的前缀自动判断进制(0x或0开头表示16进制,0开头表示8进制,其他情况表示10进制)。
- 返回值:转换后的长长整型数。
trailing_strtoln_end
long trailing_strtoln_end(const char *str, const char *end, char const **endp);
- 描述:将输入的字符串转换为长整型数,并检查是否存在指定的结尾字符串。
- 参数:
str
:输入字符串。end
:要检查的结尾字符串。endp
:一个指向字符指针的指针,用于存储转换后剩余的字符串部分的地址。如果传入NULL,则表示不需要获取剩余的字符串部分。
- 返回值:转换后的长整型数。
trailing_strtoln
long trailing_strtoln(const char *str, const char *end);
- 描述:将输入的字符串转换为长整型数,并检查是否存在指定的结尾字符串。
- 参数:
str
:输入字符串。end
:要检查的结尾字符串。
- 返回值:转换后的长整型数。
trailing_strtol
long trailing_strtol(const char *str);
- 描述:将输入的字符串转换为长整型数。
- 参数:
str
:输入字符串。
- 返回值:转换后的长整型数。
str_to_upper
void str_to_upper(const char *in, char *out, size_t len);
- 描述:将输入的字符串转换为大写形式。
- 参数:
in
:输入字符串。out
:用于存储大写形式的输出字符串。len
:输入字符串的长度。
ltoa
char *ltoa(long int num, char *str, int base);
- 描述:将长 整型数转换为字符串表示。
- 参数:
num
:输入的长整型数。str
:用于存储转换后的字符串。base
:指定转换时使用的进制。可以是2~36之间的任意整数。
- 返回值:指向输出字符串的指针。
simple_atoi
int simple_atoi(const char *nptr);
- 描述:将输入的字符串转换为整数。
- 参数:
nptr
:输入字符串。
- 返回值:转换后的整数。
simple_atoll
long long simple_atoll(const char *nptr);
- 描述:将输入的字符串转换为长长整型数。
- 参数:
nptr
:输入字符串。
- 返回值:转换后的长长整型数。
simple_abs
int simple_abs(int n);
- 描述:计算整数的绝对值。
- 参数:
n
:输入的整数。
- 返回值:输入整数的绝对值。
ctype
#include <ctype.h>
isalnum
int isalnum(int c);
- 描述:检查给定的字符是否是字母数字字符(字母或数字)。
- 参数:
c
:要检查的字符。
- 返回值:如果字符是字母数字字符,则返回非零值,否则返回零。
isalpha
int isalpha(int c);
- 描述:检查给定的字符是否是字母字符。
- 参数:
c
:要检查的字符。
- 返回值:如果字符是字母字符,则返回非零值,否则返回零。
isascii
int isascii(int c);
- 描述:检查给定的字符是否是有效的ASCII字符。
- 参数:
c
:要检查的字符。
- 返回值:如果字符是有效的ASCII字符,则返回非零值,否则返回零。
isblank
int isblank(int c);
- 描述:检查给定的字符是否是空白字符。
- 参数:
c
:要检查的字符。
- 返回值:如果字符是空白字符,则返回非零值,否则返回零。
iscntrl
int iscntrl(int c);
- 描述:检查给定的字符是否是控制字符。
- 参数:
c
:要检查的字符。
- 返回值:如果字符是控制字符,则返回非零值,否则返回零。
isdigit
int isdigit(int c);
- 描述:检查给定的字符是否是数字字符。
- 参数:
c
:要检查的字符。
- 返回值:如果字符是数字字符,则返回非零值,否则返回零。
isgraph
int isgraph(int c);
- 描述:检查给定的字符是否是可打印字符且不是空格。
- 参数:
c
:要检查的字符。
- 返回值:如果字符是可打印字符且不是空格,则返回非零值,否则返回零。
islower
int islower(int c);
- 描述:检查给定的字符是否是小写字母字符。
- 参数:
c
:要检查的字符。
- 返回值:如果字符是小写字母字符,则返回非零值,否则返回零。
isprint
int isprint(int c);
- 描述:检查给定的字符是否是可打印字符,包括空格。
- 参数:
c
:要检查的字符。
- 返回值:如果字符是可打印字符,则返回非零值,否则返回零。
ispunct
int ispunct(int c);
- 描述:检查给定的字符是否是标点符号字符。
- 参数:
c
:要检查的字符。
- 返回值:如果字符是标点符号字符,则返回非零值,否则返回零。
isspace
int isspace(int c);
- 描述:检查给定的字符是否是空白字符。
- 参数:
c
:要检查的字符。
- 返回值:如果字符是空白字符,则返回非零值,否则返回零。
isupper
int isupper(int c);
- 描述:检查给定的字符是否是大写字母字符。
- 参数:
c
:要检 查的字符。
- 返回值:如果字符是大写字母字符,则返回非零值,否则返回零。
isxdigit
int isxdigit(int c);
- 描述:检查给定的字符是否是十六进制数字字符。
- 参数:
c
:要检查的字符。
- 返回值:如果字符是十六进制数字字符,则返回非零值,否则返回零 。
toascii
int toascii(int c);
- 描述:将给定的字符转换为其ASCII值。
- 参数:
c
:要转换的字符。
- 返回值:字符的ASCII值。
tolower
int tolower(int c);
- 描述:将给定的字符转换为小写字母。
- 参数:
c
:要转换的字符。
- 返回值:字符的小写形式。
toupper
int toupper(int c);
- 描述:将给定的字符转换为大写字母。
- 参数:
c
:要转换的字符。
- 返回值:字符的大写形式。
string
#include <string.h>
memcpy
void *memcpy(void *dst, const void *src, int cnt);
- 描述:将源内存区域的值复制到目标内存区域。
- 参数:
dst
:目标内存区域的指针。src
:源内存区域的指针。cnt
:要复制的字节数。
- 返回值:指向目标内存区域的指针。
memset
void *memset(void *dst, int val, int cnt);
- 描述:将目标内存区域的前
cnt
个字节设置为指定的值val
。 - 参数:
dst
:要填充的内存区域的指针。val
:要设置的值。cnt
:要设置的字节数。
- 返回值:指向目标内存区域的指针。
memcmp
int memcmp(const void *dst, const void *src, unsigned int cnt);
- 描述:比较两个内存区域的前
cnt
个字节。 - 参数:
dst
:第一个内存区域的指针。src
:第二个内存区域的指针。cnt
:要比较的字节数。
- 返回值:如果
dst
小于src
,返回负数;如果dst
等于src
,返回零;如果dst
大于src
,返回正数。
strlen
unsigned int strlen(const char *str);
- 描述:计算字符串的长度,不包括结尾的空字符。
- 参数:
str
:输入字符串的指针。
- 返回值:输入字符串的长度。
strnlen
unsigned int strnlen(const char *s, unsigned int n);
- 描述:计算字符串的长度,但不超过
n
个字符。 - 参数:
s
:输入字符串的指针。n
:要检查的最大字符数。
- 返回值:输入字符串的长度,但不超过
n
。
strcpy
char *strcpy(char *dst, const char *src);
- 描述:将源字符串(包括结尾的空字符)复制到目标缓冲区。
- 参数:
dst
:目标缓冲区的指针。src
:源字符串的指针。
- 返回值:指向目标 缓冲区的指针。
strncpy
char *strncpy(char *dest, const char *src, unsigned int n);
- 描述:将源字符串的最多
n
个字符(包括结尾的空字符)复制到目标缓冲区。 - 参数:
dest
:目标缓冲区的指针。src
:源字符串的指针。n
:要复制的最大字符数。
- 返回值:指向目标缓冲区的指针。
strcat
char *strcat(char *dst, const char *src);
- 描述:将源字符串(包括结尾的空字符)追加到目标字符串的末尾。
- 参数:
dst
:目标字符串的指针。src
:源字符串的指针。
- 返回值:指向目标字符串的指针。
strcmp
int strcmp(const char *p1, const char *p2);
- 描述:比较两个字符串。
- 参数:
p1
:第一个字符串的指针。p2
:第二个字符串的指针。
- 返回值:如果
p1
小于p2
,返回负数;如果p1
等于p2
,返回零;如果p1
大于p2
,返回正数。
strncmp
int strncmp(const char *p1, const char *p2, unsigned int cnt);
- 描述:比较两个字符串的前
cnt
个字符。 - 参数:
p1
:第一个字符串的指针。p2
:第二个字符串的指针。cnt
:要比较的字符数。
- 返回值:如果
p1
小于p2
,返回负数;如果p1
等于p2
,返回零;如果p1
大于p2
,返回正数。
strchr
char *strchr(const char *s, int c);
- 描述:在字符串中查找字符
c
第一次出现的位置。 - 参数:
s
:输入字符串的指针。c
:要查找的字符。
- 返回值:指向查找到的字符的指针,或者
NULL
。
strrchr
char *strrchr(const char *s, int c);
- 描述:在字符串中查找字符
c
最后一次出现的位置。 - 参数:
s
:输入字符串的指针。c
:要查找的字符。
- 返回值:指向查找到的字符的指针,或者
NULL
。
strstr
char *strstr(const char *s, const char *what);
- 描述:在字符串中查找子串
what
的第一次出现位置。 - 参数:
s
:输入字符串的指针。what
:要查找的子串的指针。
- 返回值:指向查找到的子串的指针,或者
NULL
。
memchr
void *memchr(void *ptr, int value, unsigned int num);
- 描述:在内存中查找字符
value
第一次出现的位置。 - 参数:
ptr
:输入内存区域的指针。value
:要查找的字符。num
:要扫描的字节数。
- 返回值:指向查找到的字符的指针,或者
NULL
。
memmove
void *memmove(void *dest, const void *src, unsigned int count);
- 描述:将源内存区域的值复制到目标内存区域,可以处理内存重叠的情况。
- 参数:
dest
:目标内存区域的指针。src
:源内存区域的指针。count
:要复制的字节数。
- 返回值:指向目标内存区域的指针。
启用 CONFIG_SPRINTF
sprintf
int sprintf(char *buf, const char *fmt, ...);
- 描述:将格式化数据写入字符串中。
- 参数:
buf
:指向目标字符串的指针,用于存储格式化数据。fmt
:包含要写入的数据格式的格式字符串。...
:可变数量的参数,根据fmt
进行格式化并写入buf
中。
- 返回值:返回写入到
buf
中的字符数(不包括空终止符)。
snprintf
int snprintf(char *buf, size_t n, const char *fmt, ...);
- 描述:安全地将格式化数据写入字符串中,限制写入的字符数。
- 参数:
buf
:指向目标字符串的指针,用于存储格式化数据。n
:允许写入的最大字符数(包括空终止符)。fmt
:包含要写入的数据格式的格式字符串。...
:可变数量的参数,根据fmt
进行格式化并写入buf
中。不会超过n-1
个字符,并在末尾添加空终止符。
- 返回值:返回写入到
buf
中的字符数(不包括空终止符)。如果输出被截断,返回尝试写入的总字符数。
vsnprintf
int vsnprintf(char *buf, size_t n, const char *fmt, va_list ap);
- 描述:类似于
snprintf
,但使用va_list
类型的参数列表来处理可变参数。 - 参数:
buf
:指向目标字符串的指针,用于存储格式化数据。n
:允许写入的最大字符数(包括空终止符)。fmt
:包含要写入的数据格式的格式字符串。ap
:va_list
类型的参数列表,用于传递可变数量的参数。
- 返回值:返回写入到
buf
中的字符数(不包括空终止符)。如果输出被截断,返回尝试写入的总字符数。
smalloc
#include <smalloc.h>
smalloc_init
int32_t smalloc_init(uint32_t p_heap_head, uint32_t n_heap_size);
- 描述:使用指定的堆参数初始化简单的
malloc
库。 - 参数:
p_heap_head
(uint32_t
): 堆的起始地址。n_heap_size
(uint32_t
): 堆的大小(以字节为单位)。
- 返回值:如果成功则返回零,否则返回非零值。
smalloc
void *smalloc(uint32_t num_bytes);
- 描述:从堆中分配指定大小的内存 块。
- 参数:
num_bytes
(uint32_t
): 要分配的字节数。
- 返回值:指向分配的内存块的指针,如果分配失败则返回
NULL
。
srealloc
void *srealloc(void *p, uint32_t num_bytes);
- 描述:重新分配具有指定新大小的内存块。
- 参数:
p
(void*
): 要重新分配的内存块的指针。num_bytes
(uint32_t
): 新的字节大小。
- 返回值:指向重新分配的内存块的指针,如果重新分配失败则返回
NULL
。
sfree
void sfree(void *p);
- 描述:释放指定指针指向的内存块。
- 参数:
p
(void*
): 要释放的内存块的指针。