这是一个在 RT-Thread 上,基于 ANSI/ISO C89 实现的动态字符串软件包。
名称 | 说明 |
---|---|
inc | 头文件目录 |
src | 源代码目录 |
examples | 例程目录 |
dstr package 遵循 LGPLv2.1 许可,详见 LICENSE
文件。
- 对 RT-Thread 无依赖,也可用于裸机。
- v0.2.0
- 增在从前面拼接字符串相关API
- 增加从前面拼接动态字符串相关API
- 增加从后面拼接动态字符串相关API
- 改善用户体验
- 修复已知 bug
- v0.1.0
- 动态字符串软件包第一版
使用 dstr package 需要在 RT-Thread 的包管理器中选择它,详情如下:
RT-Thread online packages --->
miscellaneous packages --->
[*] dstr: a dynamic string package
Version (v0.2.0) --->
dstr Options --->
[*] dstr test example
保存 menuconfig 配置后使用 pkgs --update
命令下载软件包
使用 dstr 可参考例子代码,该代码位于:/dstr/examples/examples_dstr.c
rt_dstr_t *rt_dstr_new(const char *str);
参数 | 描述 |
---|---|
name | 源字符串 |
返回 | 描述 |
thiz | 动态字符串创建成功 |
NULL | 动态字符串创建失败 |
可以传入 NULL,使用详情可以查看
examples_dstr.c
void rt_dstr_del(rt_dstr_t *thiz);
参数 | 描述 |
---|---|
thiz | 动态字符串对象 |
返回 | 描述 |
无 | 无 |
rt_dstr_t *rt_dstr_cat(rt_dstr_t *thiz, const char *src);
参数 | 描述 |
---|---|
thiz | 动态字符串对象 |
src | 源字符串 |
返回 | 描述 |
thiz | 字符串拼接 dstr 成功 |
NULL | 字符串拼接 dstr 失败,但不会更改 thiz,交由用户处理 |
rt_dstr_t *rt_dstr_ncat(rt_dstr_t *thiz, const char *src, size_t n);
参数 | 描述 |
---|---|
thiz | 动态字符串对象 |
src | 源字符串 |
n | 需要拼接几个字符 |
返回 | 描述 |
thiz | 字符串拼接 dstr 成功 |
null | 字符串拼接 dstr 失败,但不会更改 thiz,交由用户处理 |
rt_dstr_t *rt_dstr_precat(rt_dstr_t *thiz, const char *src);
参数 | 描述 |
---|---|
thiz | 动态字符串对象 |
src | 源字符串 |
返回 | 描述 |
thiz | 字符串拼接 dstr 成功 |
null | 字符串拼接 dstr 失败,但不会更改 thiz,交由用户处理 |
rt_dstr_t *rt_dstr_prencat(rt_dstr_t *thiz, const char *src, size_t n);
参数 | 描述 |
---|---|
thiz | 动态字符串对象 |
src | 源字符串 |
n | 需要拼接几个字符 |
返回 | 描述 |
thiz | 字符串拼接 dstr 成功 |
NULL | 字符串拼接 dstr 失败,但不会更改 thiz,交由用户处理 |
rt_dstr_t *rt_dstr_cat_dstr(rt_dstr_t *dst, rt_dstr_t *src);
参数 | 描述 |
---|---|
dst | 动态字符串对象 |
src | 源字符串 |
返回 | 描述 |
dst | 动态字符串拼接 dst 成功,但不会更改 src,交由用户处理 |
NULL | 动态字符串拼接 dst 失败,但不会更改 dst & src,交由用户处理 |
rt_dstr_t *rt_dstr_ncat_dstr(rt_dstr_t *dst, rt_dstr_t *src, size_t n);
参数 | 描述 |
---|---|
dst | 动态字符串对象 |
src | 源字符串 |
n | 需要拼接几个字符 |
返回 | 描述 |
dst | 动态字符串拼接 dst 成功,但不会更改 src,交由用户处理 |
NULL | 动态字符串拼接 dst 失败,但不会更改 dst & src,交由用户处理 |
rt_dstr_t *rt_dstr_precat_dstr(rt_dstr_t *dst, rt_dstr_t *src);
参数 | 描述 |
---|---|
dst | 动态字符串对象 |
src | 源字符串 |
返回 | 描述 |
dst | 动态字符串拼接 dst 成功,但不会更改 src,交由用户处理 |
NULL | 动态字符串拼接 dst 失败,但不会更改 dst & src,交由用户处理 |
rt_dstr_t *rt_dstr_prencat_dstr(rt_dstr_t *dst, rt_dstr_t *src, size_t n);
参数 | 描述 |
---|---|
dst | 动态字符串对象 |
src | 源字符串 |
n | 需要拼接几个字符 |
返回 | 描述 |
thiz | 字符串拼接 dstr 成功 |
NULL | 字符串拼接 dstr 失败,但不会更改 thiz,交由用户处理 |
int rt_dstr_cmp(rt_dstr_t *const dstr1, rt_dstr_t *const dstr2);
参数 | 描述 |
---|---|
dstr1 | 动态字符串1 |
dstr2 | 动态字符串2 |
返回 | 描述 |
负数 | dstr1 < dstr2 |
返回0 | dstr1 = dstr2 |
正数 | dstr1 > dstr2 |
int rt_dstr_ncmp(rt_dstr_t *const dstr1, rt_dstr_t *const dstr2, size_t n);
参数 | 描述 |
---|---|
dstr1 | 动态字符串1 |
dstr2 | 动态字符串2 |
n | 需要比较几个字符 |
返回 | 描述 |
负数 | dstr1 < dstr2 |
返回0 | dstr1 = dstr2 |
正数 | dstr1 > dstr2 |
int rt_dstr_casecmp(rt_dstr_t *const dstr1, rt_dstr_t *const dstr2);
参数 | 描述 |
---|---|
dstr1 | 动态字符串1 |
dstr2 | 动态字符串2 |
返回 | 描述 |
负数 | dstr1 < dstr2 |
返回0 | dstr1 = dstr2 |
正数 | dstr1 > dstr2 |
int rt_dstr_strlen(rt_dstr_t *const thiz);
参数 | 描述 |
---|---|
thiz | 动态字符串对象 |
返回 | 描述 |
正数 | 返回动态字符串长度 |
返回0 | 返回动态字符串长度 |
-1 | 输入参数为 NULL 是非法的 |
rt_dstr_t *rt_dstr_sprintf(rt_dstr_t *thiz, const char *fmt, ...);
参数 | 描述 |
---|---|
thiz | 动态字符串对象 |
fmt | 格式化字符串 |
argument... | 可选参数,任何类型的数据 |
返回 | 描述 |
thiz | 字符串格式化成功 |
NULL | 字符串格式化失败,但不会更改 thiz,交由用户处理 |
rt_dstr_t *rt_dstr_append_printf(rt_dstr_t *thiz, const char *format, ...);
参数 | 描述 |
---|---|
thiz | 动态字符串对象 |
fmt | 格式化字符串 |
argument... | 可选参数,任何类型的数据 |
返回 | 描述 |
thiz | 字符串格式化成功 |
NULL | 字符串格式化失败,但不会更改 thiz,交由用户处理 |
暂无