wow-string-list文件说明

wow-string-list文件说明

  • 项目地址:https://gitee.com/wow-iot/wow-iot7
  • 本文件主要功能用于字符串链表相关操作,主要涉及创建、销毁、插入、获取、分隔、格式转换;

初始化与退出:

复制代码
StringList_T* wow_stringlist_new(void)
{
	return (StringList_T*)wow_slist_create();	
}
void wow_stringlist_free(StringList_T** pptStrList)
{
	wow_slist_destroy(pptStrList,slist_free_func);
}

字符串链表添加元素

复制代码
int wow_stringlist_append(StringList_T* ptStrList, const char *pcElem)
{
	CHECK_RET_VAL_P(ptStrList,-PARAM_INPUT_STRUCT_IS_NULL,"param input struct invalid!\n");
	CHECK_RET_VAL_P(pcElem && strlen(pcElem) > 0,-PARAM_INPUT_DATA_IS_NULL,"param input data invalid!\n");

	int len = strlen(pcElem);

	char* data = MALLOC(len + 1);
	CHECK_RET_VAL_P(data,-SYSTEM_MALLOC_FAILED,"malloc data size!\n");
	memset(data,0,len + 1);
	memcpy(data,pcElem,len);

	return wow_slist_insert_tail(ptStrList,data);
}

获取字符串链表元素个数与内容

复制代码
int wow_stringlist_size(StringList_T* ptStrList)
{
	return wow_slist_size(ptStrList);
}
char* wow_stringlist_data(StringList_T* ptStrList,int nIdx)
{
	return (char*)wow_slist_peek_by_index(ptStrList,nIdx);
}

字符串链表元素格式转换

复制代码
int wow_stringlist_toInt(StringList_T* ptStrList,int nIdx)
{
	char* data = (char*)wow_slist_peek_by_index(ptStrList,nIdx);
	CHECK_RET_ABORT(data);

	return strtol(data,NULL,10);
}

float wow_stringlist_toFloat(StringList_T* ptStrList,int nIdx)
{
	char* data = (char*)wow_slist_peek_by_index(ptStrList,nIdx);
	CHECK_RET_ABORT(data);

	return (float)strtod(data,NULL);
}

分割字符串

复制代码
StringList_T* wow_stringlist_split(char *pcStr, const char *pcDelim)
{
	StringList_T* ptStrList = wow_stringlist_new();
	CHECK_RET_VAL_P(ptStrList,NULL, "string_list new failed!\n");

	char *copy = strdup(pcStr);
	CHECK_RET_GOTO_P_A(copy,out, "strdup failed!\n");

	int ret = -1;
	char *token = strtok(copy, pcDelim);
	while (token){
		ret = wow_stringlist_append(ptStrList, token);
		CHECK_RET_GOTO(ret == 0,out);

		token  = strtok(NULL, pcDelim);
	}

	free(copy);
	return ptStrList;

out:
	wow_stringlist_free(&ptStrList);
	free(copy);
	return NULL;
}
相关推荐
啵啵啵鱼14 分钟前
DS-顺序表
java·数据结构·笔记·后端·链表·obsidian
键盘会跳舞1 小时前
【C++多线程】死锁诊断工具实战:从 Windows 到 Linux 的全链路排查
linux·c++·windows·死锁
YSL0701242 小时前
时间复杂度和空间复杂度
数据结构
拂拉氏2 小时前
【知识讲解】 Linux环境变量的认识与使用
linux·环境变量
洋不写bug2 小时前
链表面试笔试经典题目详细解析,题目多解法,复杂度分析
数据结构·链表·面试
zhangrelay2 小时前
答疑-是否软件源问题都必须更换为国内呢-
linux·笔记·学习·ubuntu·ros2
zhangrelay2 小时前
《ROS 机器人程序设计》课程教学大纲-2026- kinetic-lyrical
linux·笔记·学习·ubuntu·机器人
KFCgrandpahhh2 小时前
rk3576点灯
linux·驱动开发
拂拉氏2 小时前
【知识讲解】 Linux进程认识及深度理解
linux·进程
码农小韩3 小时前
Linux应用开发(一)——Linux的标准IO
linux·运维·服务器