@函数名称: strsplit。
函数原型: uint8_t **strsplit(uint8_t *str,uint8_t *Separator)。
函数功能: 将str字符串用特定分隔符Separator分隔为多个字符串。
函数返回: 分割后的子字符串列表指针。
注 意:存储分割后的子字符串列表的变量str_list是用动态内存分配函数malloc分配的,在使用完str_list后要及时释放其所占用的内存。
#include#include #include #define uint8_t char //单片机C语言环境下可直接用uint8_t类型 uint8_t **strsplit(uint8_t *str,uint8_t *Separator) { uint8_t *str_buf=strdup(str); uint8_t **str_list=NULL; uint8_t sub_str_len=0; uint8_t *strsub_str_buf=NULL; uint8_t **p=NULL; while(*str) { if(*str == *Separator) sub_str_len++; str++; } sub_str_len++; // printf("%dn",sub_str_len); str_list = (uint8_t **)malloc(sub_str_len * sizeof(uint8_t *)); p = str_list; strsub_str_buf=strtok(str_buf,Separator); for(uint8_t i=0;i 执行后的结果:
将字符串uint8_t *str="1 234 5 6 7 8 9 0"; 以空格为分隔符分割为8个子字符串。
str = 1, str_len=1 str = 234, str_len=3 str = 5, str_len=1 str = 6, str_len=1 str = 7, str_len=1 str = 8, str_len=1 str = 9, str_len=1 str = 0, str_len=1



